повышенный уровень, время – 3 мин)

Тема: Графы. Поиск количества путей

Что нужно знать:

· если в город R можно приехать только из городов X, Y, и Z, то число различных путей из города A в город R равно сумме числа различных путей проезда из A в X, из A в Y и из A в Z, то есть

,

где обозначает число путей из вершины A в некоторую вершину Q

· число путей конечно, если в графе нет циклов – замкнутых путей

Пример задания:

На рисунке – схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, И, К, М. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой. Сколько существует различных путей, ведущих из города А в город М и проходящих через город В?

Решение:

1) для того, чтобы оставить только маршруты, проходящие через вершину В, нужно представить граф в таком виде, «собрав его в пучок» около вершины В:

2) сначала отбросим все рёбра и вершины (кроме вершины В), которые оказались на одной вертикали с вершиной В на рисунке[1]:

3) в данном случае выбрасывается вершина Ж, все связанные с ней рёбра, и ребро ГЕ:

4) дальше используем стандартный метод (см. разбор следующей задачи)

5) покажем только окончательный результат:

6) Ответ: 16.

Ещё пример задания:

На рисунке – схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, И, К, Л. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой. Сколько существует различных путей из города А в город Л?

Решение:

1) будем обозначать через NX количество различных путей из города А в город X

2) для города А есть только один маршрут – никуда не двигаться, поэтому NA = 1

3) для любого города X количество маршрутов NX можно вычислить как

Nx = Ny + … + Nz

где сумма взята по всем вершинам, из которых есть прямой путь в вершину X; например,

NЛ = NИ + NЖ + NК

4) около каждого города будем записывать количество маршрутов из А в этот город

5) начнем считать количество путей с начала маршрута – с города А:

6) теперь находим те вершины, в которые можно попасть напрямую из уже рассмотренных вершин (пока – только из А), это Б и Г, для них тоже количество путей равно 1:

 

7) теперь можно определить количество путей для В и Е; в В можно приехать только из А, Б и Г, а в Е – только из Г:

NВ = NА + NБ + NГ = 1 + 1 + 1 = 3

NЕ = NГ = 1

8) теперь можно определить количество путей для Д, Ж и К; в Д можно приехать только из Б и В, в Ж – из В и Е, а в Е – только из Г:

NД = NБ + NВ = 1 + 3 = 4

NЖ = NВ + NЕ = 3 + 1 = 4

NК = NЕ­ = 1

 

9) теперь можно определить количество путей для И, куда можно приехать только из Д (NИ = NД) и, наконец, для Л:

NЛ = NД + NИ + NЖ + NК = 13

10) Ответ: 13.

Ещё пример задания:

На карту нанесены 4 города (A, B, C и D). Известно, что

между городами A и С – три дороги

между городами C и B – две дороги

между городами A и B – две дороги

между городами C и D – две дороги

между городами B и D – четыре дороги

По каждой из этих дорог можно ехать в обе стороны. Сколькими различными способами можно проехать из города А в город D, посещая каждый город не более одного раза?

Решение:

11) нарисуем граф, в котором множественные дороги из одного города в другой будем обозначать одной дугой и подписывать около неё количество дорог:

12) выпишем все маршруты, по которым можно ехать из A в D так, чтобы дважды не проезжать один и тот же город:

2 4 3 2 2 2 2 3 2 4
A ® B ® D A ® С ® D A ® B ® С ® D A ® C ® B ® D

13) теперь рассмотрим маршрут A ® B ® D; сначала можно двумя путями приехать из A в B, а затем – 4-мя путями из B в D; поэтому общее количество различных маршрутов равно произведению этих чисел: 2*4 = 8

14) аналогично находит количество различных путей по другим маршрутам

A ® С ® D: 3*2 = 6

A ® B ® С ® D: 2*2*2 = 8

A ® C ® B ® D: 3*2*4 = 24

15) всего получается 8 + 6 + 8 + 24 = 46.

16) Ответ: 46.

Еще пример задания:

На рисунке – схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, И, К. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой. Сколько существует различных путей из города А в город К?

Е

Решение (1 вариант, подстановки):

1) начнем считать количество путей с конца маршрута – с города К

2) будем обозначать через NX количество различных путей из города А в город X

3) общее число путей обозначим через N

4) по схеме видно, что NБ = NГ = 1

5) очевидно, что если в город X можно приехать только из Y, Z, то NX = NY + N­Z, то есть нужно сложить число путей, ведущих из A во все города, откуда можно приехать в город X

6) поскольку в K можно приехать из Е, Д, Ж или И, поэтому

N = N­К = NД + NЕ + NЖ + NИ

7) в город И можно приехать только из Д, поэтому NИ = NД

8) в город Ж можно приехать только из Е и В, поэтому

Ж = NЕ + NВ

9) подставляем результаты пп. 6 и 7 в формулу п. 5:

N = NВ + 2NЕ + 2NД

10) в город Д можно приехать только из Б и В, поэтому

Д = NБ + NВ

так что

N = 2NБ + 3NВ + 2NЕ

11) в город Е можно приехать только из Г, поэтому N­Е = NГ так что

N = 2NБ + 3NВ + 2NГ

12) по схеме видно, что NБ = NГ = 1, кроме того, NВ = 1 + N­Б + NГ = 3

13) окончательно N = 2NБ + 3NВ + 2NГ = 2·1 + 3·3 + 2·1 = 13

14) Ответ: 13.

Решение (2 вариант, удобная форма записи):

1) начнем считать количество путей с конца маршрута – с города К

2) записываем для каждой вершины, из каких вершин можно в нее попасть

К ИДЖЕ

И Д

Ж ВЕ

Е Г

Д БВ

Г А

В АБГ

Б А

3) теперь для удобства «обратного хода» вершины можно отсортировать так[2], чтобы сначала шли все вершины, в которые можно доехать только из начальной точки А:

Б А

Г А

затем на каждом шаге добавляем те вершины, в которые можно доехать из уже добавленных в список (и из исходной точки):

В АБГ

Е Г

далее добавляем все вершины, куда можно доехать из А, Б, Г, В и Е:

Д БВ

Ж ВЕ

на следующем шаге добавляем вершину И

И Д

и, наконец, конечную. вершину

К ИДЖЕ

именно в таком порядке мы и будем вычислять количество путей для каждой вершины

4) теперь идем по полученному списку вершин, полагая, что количество вариантов попасть в вершину равно суммарному количеству вариантов попасть в ее непосредственных предшественников.

NБ = 1, NГ = 1

NВ = 1+1+1 = 3, NЕ = 1

NД = 1+3 = 4, NЖ = 3 + 1 = 4

NИ = 4,

N = NК = 4 + 4 + 4 + 1 = 13

5) заметим, что вершины можно и не сортировать специально, а просто выбирать возможный порядок вычисления: проверять, какие значения известны и какие можно рассчитать с их помощью на следующем шаге

6) Ответ: 13.

Возможные ловушки и проблемы: · очень важна аккуратность и последовательность; сначала идем от конечной точки к начальной, выписывая все вершины, из которых можно приехать в данную; затем идем обратно, определяя числовые значения · построение полного дерева маршрутов – занятие трудоемкое и достаточно бесперспективное, даже грамотные учителя информатики здесь в большинстве случаев что-то забывают и ошибаются

Решение (3 вариант, перебор вершин по алфавиту):

1) Запишем вершины в алфавитном порядке и для каждой из них определим, из каких вершин можно в нее попасть

Б А

В АБГ

Г А

Д БВ

Е Г

Ж ВЕ

И Д

К ИДЖЕ

2) теперь определяем количество путей; сначала ставим 1 для тех вершин, в которые можно проехать только из начальной (А):

вершина откуда? N
Б А
В АБГ
Г А
Д БВ
Е Г
Ж ВЕ
И Д
К ИДЖЕ

3) затем на каждом шаге добавляем те вершины, в которые можно доехать из уже добавленных в список (и из исходной точки):

вершина откуда? N
Б А
В АБГ
Г А
Д БВ
Е Г
Ж ВЕ
И Д
К ИДЖЕ

4) следующий шаг

вершина откуда? N
Б А
В АБГ
Г А
Д БВ
Е Г
Ж ВЕ
И Д
К ИДЖЕ

5) и последние 2 шага

вершина откуда? N
Б А
В АБГ
Г А
Д БВ
Е Г
Ж ВЕ
И Д
К ИДЖЕ

6) Ответ: 13.

Решение (4 вариант, перебор всех путей с начала, А. Яфарова):

1) запишем все вершины, в которые есть прямой путь из вершины A: Б, В и Г; получается три начальных отрезка:

АБ, АВ, АГ

2) рассмотрим маршрут АБ: из Б можно ехать в В и Д, поэтому получаем два маршрута:

АБВ, АБД

3) рассматриваем конечные точки этих маршрутов: из В можно ехать в Д и Ж, а из Д – в И и К:

АБВД, АБВЖ, АБДИ, АБДК

4) снова смотрим на конечные точки: из Д едем в И и К, из Ж и И – только в К:

АБВДИ, АБВДК, АБВЖК, АБДИК, АБДК

5) из И едем только в К, таким образом, все возможные маршруты, содержащие участок АБ, доведены до конечной точки К, всего 5 таких маршрутов:

АБВДИК, АБВДК, АБВЖК, АБДИК, АБДК

6) затем аналогично рассматриваем маршруты, которые начинаются с АВ:

АВД, АВЖ

АВДИ, АВДК, АВЖК

АВДИК, АВДК, АВЖК

всего 3 маршрута

7) наконец, остается рассмотреть маршруты, которые начинаются с АГ:

АГВ, АГЕ

АГВД, АГВЖ, АГЕЖ, АГЕК

АГВДИ, АГВДК, АГВЖК, АГЕЖК, АГЕК

АГВДИК, АГВДК, АГВЖК, АГЕЖК, АГЕК

всего 5 маршрутов

8) складываем количество маршрутов для всех начальных участков: 5 + 3 + 5 = 13

9) Ответ: 13.

Возможные проблемы: · при большом количестве маршрутов легко запутаться и что-то пропустить

Решение (5 вариант, графический, О.О. Грущак, КузГПА):

1) Главную идею решения: (число дорог в город N есть сумма дорог, приводящих в города, из которых есть прямой проезд в город N), отразим на самой схеме, показывая на ней ЧИСЛО ДОРОГ, приводящих в каждый город.

2) Последовательность очевидна: начинаем с Б и Г (городов, куда есть по 1-й дороге из А)

3) Посчитаем дороги в В: 1 (из A)+ 1(дороги города Б)+ 1(дороги города В)= 3

4) Аналогично посчитаем дороги в Д, И, Е, Ж:

5) Определяем число дорог в город К, как сумму дорог в города, с которыми он связан: Д, И, Ж, Е.

6) Ответ: 13.

 


[1] Если требуется найти количество путей, НЕ проходящих через какую-либо вершину, нужно просто отбросить саму эту вершину.

[2] Такая процедура называется топологической сортировкой графа.