Ответ:

а) Решение логических задач с помощью графов. Выбрать логическую задачу, представить объекты вершинами, связи или переходы — рёбрами, а затем описать поиск решения по полученному графу.

б) Программа для поиска оптимального пути. Представить сеть взвешенным графом и реализовать алгоритм Дейкстры для графа с неотрицательными весами либо алгоритм Беллмана—Форда, если возможны отрицательные веса. Программа должна получать граф и начальную вершину, а выдавать длину и сам оптимальный путь.

в) Программа для поиска количества различных путей. Для небольшого графа можно перебрать пути поиском в глубину, не посещая вершину повторно. Для ацикличного графа эффективен динамический подсчёт: число путей в вершину равно сумме чисел путей из её предшественников.