Решение основывается на следующем правиле.
Правило сложения. Пусть дан ориентированный граф, не содержащий циклов, и
из вершины этого графа выходит ребра которые ведут
соответственно в вершины и Пусть далее из вершины в вершину
ведет путей, из вершины в вершину ведет путей, из вершины
в вершину ведет путей. Пусть – количество путей из вершины в
вершину Тогда Это правило, естественно, может быть переформулировано для любого
количества ребер, выходящих из данной вершины.
Имея в виду это правило, построим такую таблицу:
| | | | | | | | | | | |
Вершина | | | | | | | | | | | |
Куда выход | — | | | | |
| |
|
| |
|
К-во путей | | | | | | | | | | | |
Во второй строке перечислены вершины, в третьей для каждой вершины указано, куда ведут ребра, выходящие из этой вершины. В четвертой строке
будем записывать количество путей из каждой вершины в вершину эти
количества будем вычислять, пользуясь правилом сложения. Из самой вершины
есть ровно один путь в себя – это «пустой путь». Порядок обработки вершин определяется следующим правилом: к моменту
обработки вершины должно быть известно количество путей для всех вершин,
куда из данной вершины ведут ребра. Порядок, в котором вершины указаны в
таблице, этому правилу соответствует. Заполняя таблицу слева направо,
пользуясь правилом сложения, получим:
| | | | | | | | | | | |
Вершина | | | | | | | | | | | |
Куда выход | — | | | | |
| |
|
| |
|
К-во путей | | | | | | | | | | | |