Взвешенные графы. Поиск кратчайшего пути. Динамическое программирование на ориентированных ациклических графах. Подсчет числа путей.
Дианкин Игорь
Виды графов
Ориентированный
Неориентированный
2
1
2
1
2
Виды графов
Ориентированный
Неориентированный
3
1
2
1
2
Виды графов
Цикличный
Ацикличный
4
B
A
C
1
0
2
3
Виды графов
Цикличный
Ацикличный
5
B
A
C
1
0
2
3
Взвешенные графы
Невзвешенный
Взвешенный
6
1
0
3
2
1
0
3
2
1
2
3
4
Взвешенные графы. Топологическая сортировка
7
A
B
C
D
E
F
G
1
1
1
1
1
1
1
1
Взвешенные графы. Топологическая сортировка
8
A
B
C
D
E
F
G
1
1
1
1
|
|
|
|
|
|
|
СВЯЗНЫЙ СПИСОК
1
1
1
1
Взвешенные графы. Топологическая сортировка
9
A
B
C
D
E
F
G
1
1
1
1
|
|
|
|
|
|
|
СВЯЗНЫЙ СПИСОК
ПОИСК В ГЛУБИНУ
1
1
1
1
Взвешенные графы. Топологическая сортировка
10
A
B
C
D
E
F
G
1
1
1
1
|
|
|
|
|
|
|
СВЯЗНЫЙ СПИСОК
ПОИСК В ГЛУБИНУ
1
1
1
1
Взвешенные графы. Топологическая сортировка
11
A
B
C
D
E
F
G
1
1
1
1
|
|
|
|
|
|
|
СВЯЗНЫЙ СПИСОК
ПОИСК В ГЛУБИНУ
1
1
1
1
Взвешенные графы. Топологическая сортировка
12
A
B
C
D
E
F
G
1
1
1
1
|
|
|
|
|
|
|
СВЯЗНЫЙ СПИСОК
ПОИСК В ГЛУБИНУ
1
1
1
1
Взвешенные графы. Топологическая сортировка
13
A
B
C
D
E
F
G
1
1
1
1
|
|
|
|
|
|
|
СВЯЗНЫЙ СПИСОК
ПОИСК В ГЛУБИНУ
1
1
1
1
Взвешенные графы. Топологическая сортировка
14
A
B
C
D
E
F
G
1
1
1
1
G |
|
|
|
|
|
|
СВЯЗНЫЙ СПИСОК
ПОИСК В ГЛУБИНУ
1
1
1
1
Взвешенные графы. Топологическая сортировка
15
A
B
C
D
E
F
G
1
1
1
1
F |
G |
|
|
|
|
|
СВЯЗНЫЙ СПИСОК
ПОИСК В ГЛУБИНУ
1
1
1
1
Взвешенные графы. Топологическая сортировка
16
A
B
C
D
E
F
G
1
1
1
1
F |
G |
|
|
|
|
|
СВЯЗНЫЙ СПИСОК
ПОИСК В ГЛУБИНУ
1
1
1
1
Взвешенные графы. Топологическая сортировка
17
A
B
C
D
E
F
G
1
1
1
1
E |
F |
G |
|
|
|
|
СВЯЗНЫЙ СПИСОК
ПОИСК В ГЛУБИНУ
1
1
1
1
Взвешенные графы. Топологическая сортировка
18
A
B
C
D
E
F
G
1
1
1
1
D |
E |
F |
G |
|
|
|
СВЯЗНЫЙ СПИСОК
ПОИСК В ГЛУБИНУ
1
1
1
1
Взвешенные графы. Топологическая сортировка
19
A
B
C
D
E
F
G
1
1
1
1
C |
D |
E |
F |
G |
|
|
СВЯЗНЫЙ СПИСОК
ПОИСК В ГЛУБИНУ
1
1
1
1
Взвешенные графы. Топологическая сортировка
20
A
B
C
D
E
F
G
1
1
1
1
C |
D |
E |
F |
G |
|
|
СВЯЗНЫЙ СПИСОК
ПОИСК В ГЛУБИНУ
1
1
1
1
Взвешенные графы. Топологическая сортировка
21
A
B
C
D
E
F
G
1
1
1
1
B |
C |
D |
E |
F |
G |
|
СВЯЗНЫЙ СПИСОК
ПОИСК В ГЛУБИНУ
1
1
1
1
Взвешенные графы. Топологическая сортировка
22
A
B
C
D
E
F
G
1
1
1
1
1
1
1
1
A |
B |
C |
D |
E |
F |
G |
СВЯЗНЫЙ СПИСОК
ПОИСК В ГЛУБИНУ
Взвешенные графы. Топологическая сортировка
23
A |
B |
C |
D |
E |
F |
G |
СВЯЗНЫЙ СПИСОК
A
B
C
D
E
F
G
A
B
C
D
E
F
G
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Поиск кратчайшего пути
24
A
S
T
B
1
2
3
4
Поиск кратчайшего пути. Поиск в ширину.
25
0
2
3
4
5
6
Поиск кратчайшего пути. Поиск в ширину.
26
0
2
3
4
5
Ищем путь из 0 в 6
6
Поиск кратчайшего пути. Поиск в ширину.
27
Ищем путь из 0 в 6
0
2
3
4
5
6
Поиск кратчайшего пути. Поиск в ширину.
28
Ищем путь из 0 в 6
0
2
3
4
5
6
0
Поиск кратчайшего пути. Поиск в ширину.
29
Ищем путь из 0 в 6
0
2
3
4
5
6
0
2
2
Поиск кратчайшего пути. Поиск в ширину.
30
Ищем путь из 0 в 6
0
2
3
4
5
6
0
2
2
3
Поиск кратчайшего пути. Поиск в ширину.
31
Ищем путь из 0 в 6
0
2
3
4
5
6
0
2
2
3
4
Поиск кратчайшего пути. Поиск в ширину.
32
Ищем путь из 0 в 6
0
2
3
4
5
6
0
2
2
3
4
Поиск кратчайшего пути. Поиск в ширину.
33
Ищем путь из 0 в 6
0
2
3
4
5
6
0
2
2
3
4
Поиск кратчайшего пути. Поиск в ширину.
34
Ищем путь из 0 в 6
0
2
3
4
5
6
0
2
2
3
4
Поиск кратчайшего пути. Поиск в ширину.
35
Ищем путь из 0 в 6
0
2
3
4
5
6
0
2
2
3
4
Поиск кратчайшего пути. Поиск в ширину.
36
Ищем путь из 0 в 6
0
2
3
4
5
6
0
2
2
3
4
Поиск кратчайшего пути. Поиск в ширину.
37
Ищем путь из 0 в 6
0
2
3
4
5
6
0
2
2
3
4
0-2-4-6
Динамическое программирование на ациклических ориентированных графах
38
A
B
C
D
E
Динамическое программирование
39
B
A
C
D
E
F
G
J
H
I
1
3
2
4
2
1
2
3
2
1
1
1
1
1
Динамическое программирование
40
B
A
C
D
E
F
G
J
H
I
1
3
2
4
2
1
2
3
2
1
1
1
1
1
ТОПОЛОГИЧЕСКАЯ СОРТИРОВКА
ЗАДАНИЕ. Топологически отсортировать граф
41
B
A
C
D
E
F
G
J
H
I
1
3
2
4
2
1
2
3
2
1
1
1
1
1
ЗАДАНИЕ. Топологически отсортировать граф
42
B
A
C
D
E
F
G
J
H
I
1
3
2
4
2
1
2
3
2
1
1
1
1
1
B
A
C
D
E
F
G
J
H
I
2
3
2
2
1
1
1
2
4
1
3
1
1
1
Динамическое программирование
43
B
A
C
D
E
F
G
J
H
I
2
3
2
2
1
1
1
2
4
1
3
1
1
1
PATH | A | B | C | D | E | F | G | H | I | J |
WEIGHT | ∞ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Динамическое программирование
44
B
A
C
D
E
F
G
J
H
I
2
3
2
2
1
1
1
2
4
1
3
1
1
1
PATH | A | B | C | D | E | F | G | H | I | J |
WEIGHT | ∞ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Динамическое программирование
45
2
3
2
2
1
1
1
2
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
PATH | A | B | C | D | E | F | G | H | I | J |
WEIGHT | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
WEIGHT(D)
=
MIN
WEIGHT(A) + 2
Динамическое программирование
46
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
PATH | A | B | C | D | E | F | G | H | I | J |
WEIGHT | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
WEIGHT(B)
=
MIN
0 + 2
2
Динамическое программирование
47
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
PATH | A | B | C | D(A) | E | F | G | H | I | J |
WEIGHT | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
WEIGHT(B)
=
MIN
2
2
Динамическое программирование
48
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
PATH | A | B | C | D(A) | E | F | G | H | I | J |
WEIGHT | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
WEIGHT(G)
=
MIN
WEIGHT(D) + 3
2
Динамическое программирование
49
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
PATH | A | B | C | D(A) | E | F | G | H | I | J |
WEIGHT | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
WEIGHT(G)
=
MIN
2 + 3
2
Динамическое программирование
50
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
PATH | A | B | C | D(A) | E | F | G(D) | H | I | J |
WEIGHT | 0 | 0 | 0 | 2 | 0 | 0 | 5 | 0 | 0 | 0 |
WEIGHT(G)
=
MIN
5
2
Динамическое программирование
51
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
PATH | A | B | C | D(A) | E | F | G(D) | H | I | J |
WEIGHT | 0 | 0 | 0 | 2 | 0 | 0 | 5 | 0 | 0 | 0 |
WEIGHT(C)
=
MIN
WEIGHT(A) + 3
2
Динамическое программирование
52
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
PATH | A | B | C | D(A) | E | F | G(D) | H | I | J |
WEIGHT | 0 | 0 | 0 | 2 | 0 | 0 | 5 | 0 | 0 | 0 |
WEIGHT(C)
=
MIN
0 + 3
2
Динамическое программирование
53
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
PATH | A | B | C(A) | D(A) | E | F | G(D) | H | I | J |
WEIGHT | 0 | 0 | 3 | 2 | 0 | 0 | 5 | 0 | 0 | 0 |
WEIGHT(C)
=
MIN
3
2
Динамическое программирование
54
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
PATH | A | B | C(A) | D(A) | E | F | G(D) | H | I | J |
WEIGHT | 0 | 0 | 3 | 2 | 0 | 0 | 5 | 0 | 0 | 0 |
WEIGHT(B)
=
MIN
WEIGHT(A) + 1
2
Динамическое программирование
55
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
PATH | A | B | C(A) | D(A) | E | F | G(D) | H | I | J |
WEIGHT | 0 | 0 | 3 | 2 | 0 | 0 | 5 | 0 | 0 | 0 |
WEIGHT(B)
=
MIN
0 + 1
2
Динамическое программирование
56
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
PATH | A | B(A) | C(A) | D(A) | E | F | G(D) | H | I | J |
WEIGHT | 0 | 1 | 3 | 2 | 0 | 0 | 5 | 0 | 0 | 0 |
WEIGHT(B)
=
MIN
0 + 1
2
Динамическое программирование
57
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
PATH | A | B(A) | C(A) | D(A) | E | F | G(D) | H | I | J |
WEIGHT | 0 | 1 | 3 | 2 | 0 | 0 | 5 | 0 | 0 | 0 |
WEIGHT(F)
=
MIN
WEIGHT(B) + 2
2
Динамическое программирование
58
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
PATH | A | B(A) | C(A) | D(A) | E | F | G(D) | H | I | J |
WEIGHT | 0 | 1 | 3 | 2 | 0 | 0 | 5 | 0 | 0 | 0 |
WEIGHT(F)
=
MIN
WEIGHT(B) + 2
WEIGHT(C) + 1
2
Динамическое программирование
59
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
PATH | A | B(A) | C(A) | D(A) | E | F | G(D) | H | I | J |
WEIGHT | 0 | 1 | 3 | 2 | 0 | 0 | 5 | 0 | 0 | 0 |
WEIGHT(F)
=
MIN
WEIGHT(B) + 2
WEIGHT(C) + 1
WEIGHT(D) + 1
2
Динамическое программирование
60
2
3
2
2
1
1
1
2
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
PATH | A | B(A) | C(A) | D(A) | E | F | G(D) | H | I | J |
WEIGHT | 0 | 1 | 3 | 2 | 0 | 0 | 5 | 0 | 0 | 0 |
WEIGHT(F)
=
MIN
1 + 2
3 + 1
2 + 2
Динамическое программирование
61
WEIGHT(F)
=
MIN
3
4
4
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
2
PATH | A | B(A) | C(A) | D(A) | E | F(B) | G(D) | H | I | J |
WEIGHT | 0 | 1 | 3 | 2 | 0 | 3 | 5 | 0 | 0 | 0 |
Динамическое программирование
62
WEIGHT(I)
=
MIN
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
2
PATH | A | B(A) | C(A) | D(A) | E | F(B) | G(D) | H | I | J |
WEIGHT | 0 | 1 | 3 | 2 | 0 | 3 | 5 | 0 | 0 | 0 |
WEIGHT(F) + 2
Динамическое программирование
63
WEIGHT(I)
=
MIN
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
2
PATH | A | B(A) | C(A) | D(A) | E | F(B) | G(D) | H | I | J |
WEIGHT | 0 | 1 | 3 | 2 | 0 | 3 | 5 | 0 | 0 | 0 |
WEIGHT(F) + 2
WEIGHT(G) + 1
Динамическое программирование
64
WEIGHT(I)
=
MIN
2
3
2
2
1
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
2
PATH | A | B(A) | C(A) | D(A) | E | F(B) | G(D) | H | I | J |
WEIGHT | 0 | 1 | 3 | 2 | 0 | 3 | 5 | 0 | 0 | 0 |
3 + 2
5 + 1
Динамическое программирование
65
WEIGHT(I)
=
MIN
5
6
2
3
2
2
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
2
PATH | A | B(A) | C(A) | D(A) | E | F(B) | G(D) | H | I(F) | J |
WEIGHT | 0 | 1 | 3 | 2 | 0 | 3 | 5 | 0 | 5 | 0 |
1
Динамическое программирование
66
WEIGHT(E)
=
MIN
2
3
2
2
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
2
PATH | A | B(A) | C(A) | D(A) | E | F(B) | G(D) | H | I(F) | J |
WEIGHT | 0 | 1 | 3 | 2 | 0 | 3 | 5 | 0 | 5 | 0 |
WEIGHT(B) + 4
1
Динамическое программирование
67
WEIGHT(E)
=
MIN
2
3
2
2
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
2
PATH | A | B(A) | C(A) | D(A) | E | F(B) | G(D) | H | I(F) | J |
WEIGHT | 0 | 1 | 3 | 2 | 0 | 3 | 5 | 0 | 5 | 0 |
1 + 4
1
Динамическое программирование
68
WEIGHT(E)
=
MIN
2
3
2
2
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
2
PATH | A | B(A) | C(A) | D(A) | E(B) | F(B) | G(D) | H | I(F) | J |
WEIGHT | 0 | 1 | 3 | 2 | 5 | 3 | 5 | 0 | 5 | 0 |
5
1
Динамическое программирование
69
WEIGHT(H)
=
MIN
2
3
2
2
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
2
PATH | A | B(A) | C(A) | D(A) | E(B) | F(B) | G(D) | H | I(F) | J |
WEIGHT | 0 | 1 | 3 | 2 | 5 | 3 | 5 | 0 | 5 | 0 |
1
WEIGHT(E) + 1
Динамическое программирование
70
WEIGHT(H)
=
MIN
2
3
2
2
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
2
PATH | A | B(A) | C(A) | D(A) | E(B) | F(B) | G(D) | H | I(F) | J |
WEIGHT | 0 | 1 | 3 | 2 | 5 | 3 | 5 | 0 | 5 | 0 |
1
WEIGHT(E) + 1
WEIGHT(F) + 1
Динамическое программирование
71
WEIGHT(H)
=
MIN
2
3
2
2
1
1
4
1
3
1
1
1
B
A
C
D
E
F
G
J
H
I
2
PATH | A | B(A) | C(A) | D(A) | E(B) | F(B) | G(D) | H | I(F) | J |
WEIGHT | 0 | 1 | 3 | 2 | 5 | 3 | 5 | 0 | 5 | 0 |
1
5 + 1
3 + 1
Динамическое программирование
72
WEIGHT(H)
=
MIN
6
4
PATH | A | B(A) | C(A) | D(A) | E(B) | F(B) | G(D) | H(F) | I(F) | J |
WEIGHT | 0 | 1 | 3 | 2 | 5 | 3 | 5 | 4 | 5 | 0 |
2
3
2
2
1
1
4
1
3
1
1
B
A
C
D
E
F
G
J
H
I
2
1
Динамическое программирование
73
WEIGHT(J)
=
MIN
PATH | A | B(A) | C(A) | D(A) | E(B) | F(B) | G(D) | H(F) | I(F) | J |
WEIGHT | 0 | 1 | 3 | 2 | 5 | 3 | 5 | 4 | 5 | 0 |
2
3
2
2
1
1
4
1
3
1
1
B
A
C
D
E
F
G
J
H
I
2
1
WEIGHT(H) + 1
Динамическое программирование
74
WEIGHT(J)
=
MIN
PATH | A | B(A) | C(A) | D(A) | E(B) | F(B) | G(D) | H(F) | I(F) | J |
WEIGHT | 0 | 1 | 3 | 2 | 5 | 3 | 5 | 4 | 5 | 0 |
2
3
2
2
1
1
4
1
3
1
1
B
A
C
D
E
F
G
J
H
I
2
1
WEIGHT(H) + 1
WEIGHT(I) + 1
Динамическое программирование
75
WEIGHT(J)
=
MIN
PATH | A | B(A) | C(A) | D(A) | E(B) | F(B) | G(D) | H(F) | I(F) | J |
WEIGHT | 0 | 1 | 3 | 2 | 5 | 3 | 5 | 4 | 5 | 0 |
2
3
2
2
1
1
4
1
3
1
1
B
A
C
D
E
F
G
J
H
I
2
1
4 + 1
5 + 1
Динамическое программирование
76
WEIGHT(J)
=
MIN
PATH | A | B(A) | C(A) | D(A) | E(B) | F(B) | G(D) | H(F) | I(F) | J(H) |
WEIGHT | 0 | 1 | 3 | 2 | 5 | 3 | 5 | 4 | 5 | 5 |
2
3
2
2
1
1
4
1
3
1
1
B
A
C
D
E
F
G
J
H
I
2
1
5
6
Динамическое программирование. Задание.
77
A
B
C
D
E
ПУТЬ ИЗ А В Е
3
3
1
1
1
PATH | A | B | C | D | E |
WEIGHT | ∞ | 0 | 0 | 0 | 0 |
Подсчет числа путей. Динамическое программирование
78
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | FALSE | |
B | FALSE | |
C | FALSE | |
D | FALSE | |
E | FALSE | |
F | FALSE | |
T | FALSE | |
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
ГРАФ - АЦИКЛИЧЕСКИЙ
Подсчет числа путей
79
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | FALSE | |
B | FALSE | |
C | FALSE | |
D | FALSE | |
E | FALSE | |
F | FALSE | |
T | FALSE | |
count(T) = count(E) + count(F)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
80
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | FALSE | |
B | FALSE | |
C | FALSE | |
D | FALSE | |
E | FALSE | |
F | FALSE | |
T | FALSE | |
count(T) = count(E) + count(F)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
81
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | FALSE | |
B | FALSE | |
C | FALSE | |
D | FALSE | |
E | FALSE | |
F | FALSE | |
T | FALSE | |
count(E) = count(A) + count(B)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
82
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | FALSE | |
B | FALSE | |
C | FALSE | |
D | FALSE | |
E | FALSE | |
F | FALSE | |
T | FALSE | |
count(E) = count(A) + count(B)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
83
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | FALSE | |
B | FALSE | |
C | FALSE | |
D | FALSE | |
E | FALSE | |
F | FALSE | |
T | FALSE | |
count(A) = count(S)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
84
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | FALSE | |
B | FALSE | |
C | FALSE | |
D | FALSE | |
E | FALSE | |
F | FALSE | |
T | FALSE | |
count(A) = count(S)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
85
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | FALSE | |
C | FALSE | |
D | FALSE | |
E | FALSE | |
F | FALSE | |
T | FALSE | |
count(A) = count(S)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
86
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | FALSE | |
C | FALSE | |
D | FALSE | |
E | FALSE | |
F | FALSE | |
T | FALSE | |
count(A) = count(S)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
87
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | FALSE | |
C | FALSE | |
D | FALSE | |
E | FALSE | |
F | FALSE | |
T | FALSE | |
count(E) = count(A) + count(B)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
88
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | FALSE | |
C | FALSE | |
D | FALSE | |
E | FALSE | |
F | FALSE | |
T | FALSE | |
count(E) = count(A) + count(B)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
89
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | FALSE | |
C | FALSE | |
D | FALSE | |
E | FALSE | |
F | FALSE | |
T | FALSE | |
count(B) = count(S)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
90
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | FALSE | |
C | FALSE | |
D | FALSE | |
E | FALSE | |
F | FALSE | |
T | FALSE | |
count(B) = count(S)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
91
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | FALSE | |
D | FALSE | |
E | FALSE | |
F | FALSE | |
T | FALSE | |
count(B) = count(S)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
92
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | FALSE | |
D | FALSE | |
E | TRUE | 2 |
F | FALSE | |
T | FALSE | |
count(E) = count(A) + count(B)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
93
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | FALSE | |
D | FALSE | |
E | TRUE | 2 |
F | FALSE | |
T | FALSE | |
count(T) = count(E) + count(F)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
94
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | FALSE | |
D | FALSE | |
E | TRUE | 2 |
F | FALSE | |
T | FALSE | |
count(F) = count(E) + count(C) + count(D)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
95
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | FALSE | |
D | FALSE | |
E | TRUE | 2 |
F | FALSE | |
T | FALSE | |
count(F) = count(E) + count(C) + count(D)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
96
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | FALSE | |
D | FALSE | |
E | TRUE | 2 |
F | FALSE | |
T | FALSE | |
count(F) = count(E) + count(C) + count(D)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
97
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | FALSE | |
D | FALSE | |
E | TRUE | 2 |
F | FALSE | |
T | FALSE | |
count(C) = count(S)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
98
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | TRUE | 1 |
D | FALSE | |
E | TRUE | 2 |
F | FALSE | |
T | FALSE | |
count(C) = count(S)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
99
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | TRUE | 1 |
D | FALSE | |
E | TRUE | 2 |
F | FALSE | |
T | FALSE | |
count(F) = count(E) + count(C) + count(D)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
100
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | TRUE | 1 |
D | FALSE | |
E | TRUE | 2 |
F | FALSE | |
T | FALSE | |
count(F) = count(E) + count(C) + count(D)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
101
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | TRUE | 1 |
D | FALSE | |
E | TRUE | 2 |
F | FALSE | |
T | FALSE | |
count(D) = count(S)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
102
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | TRUE | 1 |
D | FALSE | |
E | TRUE | 2 |
F | FALSE | |
T | FALSE | |
count(D) = count(S)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
103
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | TRUE | 1 |
D | TRUE | 1 |
E | TRUE | 2 |
F | FALSE | |
T | FALSE | |
count(D) = count(S)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
104
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | TRUE | 1 |
D | TRUE | 1 |
E | TRUE | 2 |
F | FALSE | |
T | FALSE | |
count(F) = count(E) + count(C) + count(D)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
105
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | TRUE | 1 |
D | TRUE | 1 |
E | TRUE | 2 |
F | FALSE | |
T | FALSE | |
count(F) = count(E) + count(C) + count(D)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
106
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | TRUE | 1 |
D | TRUE | 1 |
E | TRUE | 2 |
F | FALSE | |
T | FALSE | |
count(F) = count(E) + count(C) + count(D)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
107
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | TRUE | 1 |
D | TRUE | 1 |
E | TRUE | 2 |
F | FALSE | |
T | FALSE | |
count(F) = count(E) + count(C) + count(D)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
108
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | TRUE | 1 |
D | TRUE | 1 |
E | TRUE | 2 |
F | TRUE | 4 |
T | FALSE | |
count(F) = count(E) + count(C) + count(D)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
109
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | TRUE | 1 |
D | TRUE | 1 |
E | TRUE | 2 |
F | TRUE | 4 |
T | FALSE | |
count(T) = count(E) + count(F)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
110
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | TRUE | 1 |
D | TRUE | 1 |
E | TRUE | 2 |
F | TRUE | 4 |
T | FALSE | |
count(T) = count(E) + count(F)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
111
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | TRUE | 1 |
D | TRUE | 1 |
E | TRUE | 2 |
F | TRUE | 4 |
T | TRUE | 6 |
count(T) = count(E) + count(F)
S
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
Подсчет числа путей
112
S
B
A
C
D
E
F
T
V | COUNTED | COUNT |
S | TRUE | 1 |
A | TRUE | 1 |
B | TRUE | 1 |
C | TRUE | 1 |
D | TRUE | 1 |
E | TRUE | 2 |
F | TRUE | 4 |
T | TRUE | 6 |
СЧИТАЕМ ПУТИ ИЗ S В T РЕКУРСИВНО
count(T) = count(E) + count(F)
Время работы алгоритмов.
Обход в ширину
Топологическая сортировка
O(E + V)
O(E + V)
Динамическое программирование
O(E + V)
Подсчет числа путей
O(E + V)
113