https://github.com/lesiaukr/goit-algo-hw-06
Master's | Basic Algorithms & Data structures | Module 6 | Graphs
https://github.com/lesiaukr/goit-algo-hw-06
breadth-first-search depth-first-search dijkstra-algorithm dijkstra-shortest-path goit-algo-hw-06 graph networkx-library pagerank-algorithm weighted-graphs
Last synced: 3 months ago
JSON representation
Master's | Basic Algorithms & Data structures | Module 6 | Graphs
- Host: GitHub
- URL: https://github.com/lesiaukr/goit-algo-hw-06
- Owner: LesiaUKR
- Created: 2024-07-15T08:39:20.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-07-17T10:49:40.000Z (11 months ago)
- Last Synced: 2025-01-29T23:16:27.168Z (5 months ago)
- Topics: breadth-first-search, depth-first-search, dijkstra-algorithm, dijkstra-shortest-path, goit-algo-hw-06, graph, networkx-library, pagerank-algorithm, weighted-graphs
- Language: Python
- Homepage:
- Size: 217 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# goit-algo-hw-06
# Home work | Module 6 | Graphs
## Task 1
Для вирішення завдання було обрано репрезентацію сполучень ліній метрополітену міста Києва. Побудовано зважений граф, величини для кожного ребра представлені у вигляді імовірної відстані між станціями.
### Kiev's Metropolitan Network Graph

Проведено аналіз графа, а саме наступні показники:
1. **Number of nodes (кількість вузлів)**:
Вказує на загальну кількість станцій метро в мережі. Кількість вузлів дорівнює 52, що означає, що у графі є 52 станції метро.
2. **Number of edges (кількість ребер)**:
Вказує на загальну кількість з'єднань між станціями метро. Кількість ребер дорівнює 52, що означає, що у графі є 52 з'єднання між станціями.
3. **Степінь вузла (node degree)**:
Степінь вузла (node degree) визначається як кількість ребер, що виходять з цього вузла. Наприклад, якщо вузол має степінь 2, це означає, що він з'єднаний з двома іншими вузлами.
№ | Station | Degree|
--|--------------------------------:|:--------:|
0 | Akademmistechko | 1|
1 | Zhytomyrska | 2 |
2 | Sviatoshyn | 2 |
3 | Nyvky | 2 |
4 | Beresteiska | 2 |
5 | Shuliavska | 2 |
6 | Politekhnichnyi Instytut | 2 |
7 | Vokzalna | 2 |
8 | Universytet | 2 |
9 | Teatralna | 3 |
10| Khreshchatyk | 3 |
11| Arsenalna | 2 |
12| Dnipro | 2 |
13| Hidropark | 2 |
14| Livoberezhna | 2 |
15| Darnytsia | 2 |
16| Chernihivska | 2 |
17| Lisova | 1 |
18| Heroiv Dnipra | 1 |
19| Minska | 2 |
20| Obolon | 2 |
21| Pochaina | 2 |
22| Tarasa Shevchenka | 2 |
23| Kontraktova Ploshcha | 2 |
24| Poshtova Ploshcha | 2 |
25| Maidan Nezalezhnosti | 3 |
26| Ploshcha Ukrayinskykh heroyiv | 3 |
27| Olimpiiska | 2 |
28| Palats Ukraina | 2 |
29| Lybidska | 2 |
30| Demiivska | 2 |
31| Holosiivska | 2 |
32| Vasylkivska | 2 |
33| Vystavkovyi Tsentr | 2 |
34| Ipodrom | 2 |
35| Teremky | 1 |
36| Syrets | 1 |
37| Dorohozhychi | 2 |
38| Lukianivska | 2 |
39| Zoloti Vorota | 3 |
40| Palats Sportu | 3 |
41| Klovska | 2 |
42| Pecherska | 2 |
43| Zvirinetska | 2 |
44| Vydubychi | 2 |
45| Slavutych | 2 |
46| Osokorky | 2 |
47| Pozniaky | 2 |
48| Kharkivska | 2 |
49| Vyrlytsia | 2 |
50| Boryspilska | 2 |
51| Chervony Khutir | 1 |- *Кінцеві станції*:
Вузли зі степенем 1 є кінцевими станціями, тобто станціями, які мають лише одну суміжну станцію. Наприклад, 'Akademmistechko' та 'Chervony Khutir'.
- *Перехідні вузли*:
Вузли зі степенем 2 є звичайними проміжними станціями, які з'єднані з двома іншими станціями. Це типово для більшості станцій на прямій лінії метро. Наприклад, 'Zhytomyrska' та 'Nyvky'.
- *Станції пересадок*:
Вузли зі степенем 3 або більше є станціями пересадок, де з'єднуються більше ніж дві лінії метро. Наприклад, 'Teatralna', 'Khreshchatyk', 'Maidan Nezalezhnosti' та 'Zoloti Vorota'.
## Task 2
На практиці застосовано алгоритми DFS та BFS з наступними початковими даними:
start_station = "Akademmistechko"
end_station = "Kontraktova Ploshcha"### Результати:
1. **DFS (пошук в глибину)**
- DFS path from Akademmistechko to Kontraktova Ploshcha: ['Akademmistechko', 'Zhytomyrska', 'Sviatoshyn', 'Nyvky', 'Beresteiska', 'Shuliavska', 'Politekhnichnyi Instytut', 'Vokzalna', 'Universytet', 'Teatralna', 'Khreshchatyk', 'Maidan Nezalezhnosti', 'Poshtova Ploshcha', 'Kontraktova Ploshcha']
- DFS distance: 24
2. **BFS (пошук в ширину)**
- BFS path from Akademmistechko to Kontraktova Ploshcha: ['Akademmistechko', 'Zhytomyrska', 'Sviatoshyn', 'Nyvky', 'Beresteiska', 'Shuliavska', 'Politekhnichnyi Instytut', 'Vokzalna', 'Universytet', 'Teatralna', 'Khreshchatyk', 'Maidan Nezalezhnosti', 'Poshtova Ploshcha', 'Kontraktova Ploshcha']
- BFS distance: 24### Висновки:
**DFS (пошук в глибину)** та **BFS (пошук в ширину)** зазвичай дають різні результати, оскільки вони використовують різні стратегії для пошуку шляхів у графі. Однак у випадку графу ліній метро міста Києва обидва алгоритми дають однаковий результат через наступні причини:
Структура графу: Граф, який представляє київське метро, має досить лінійну структуру. Станції йдуть одна за одною у певному порядку, і обидва алгоритми можуть проходити ці станції у тому ж порядку.
Послідовність вершин: У графі немає складних розгалужень або альтернативних шляхів між "Akademmistechko" та "Kontraktova Ploshcha". Тому обидва алгоритми проходять ті ж самі вершини в тому ж порядку.
## Task 3
Алгоритм Дейкстри дозволяє знайти найкоротші шляхи між вузлами в графі з вагами. Це корисно для визначення мінімальних відстаней в мережах з нерівномірними вагами ребер.
Найкоротші шляхи між усіма вузлами графа знайдені за допомогою алгоритму Дейкстри та збережені у файлі **dijkstra_results.md** у вигляді таблиці. Це дозволяє визначити мінімальні відстані в мережах з нерівномірними вагами ребер.
Нижче для прикладу частина таблиці.
| | Akademmistechko | Zhytomyrska | Sviatoshyn | Nyvky | Beresteiska | Shuliavska | Politekhnichnyi Instytut | Vokzalna | Universytet | Teatralna | Khreshchatyk | Arsenalna | Dnipro | Hidropark | Livoberezhna | Darnytsia | Chernihivska | Lisova | Heroiv Dnipra | Minska | Obolon | Pochaina | Tarasa Shevchenka | Kontraktova Ploshcha | Poshtova Ploshcha | Maidan Nezalezhnosti | Ploshcha Ukrayinskykh heroyiv | Olimpiiska | Palats Ukraina | Lybidska | Demiivska | Holosiivska | Vasylkivska | Vystavkovyi Tsentr | Ipodrom | Teremky | Syrets | Dorohozhychi | Lukianivska | Zoloti Vorota | Palats Sportu | Klovska | Pecherska | Zvirinetska | Vydubychi | Slavutych | Osokorky | Pozniaky | Kharkivska | Vyrlytsia | Boryspilska | Chervony Khutir |
|:------------------------------|------------------:|--------------:|-------------:|--------:|--------------:|-------------:|---------------------------:|-----------:|--------------:|------------:|---------------:|------------:|---------:|------------:|---------------:|------------:|---------------:|---------:|----------------:|---------:|---------:|-----------:|--------------------:|-----------------------:|--------------------:|-----------------------:|--------------------------------:|-------------:|-----------------:|-----------:|------------:|--------------:|--------------:|---------------------:|----------:|----------:|---------:|---------------:|--------------:|----------------:|----------------:|----------:|------------:|--------------:|------------:|------------:|-----------:|-----------:|-------------:|------------:|--------------:|------------------:|
| Akademmistechko | 0 | 4 | 7 | 9 | 12 | 14 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 27 | 29 | 31 | 34 | 38 | 34 | 32 | 29 | 26 | 24 | 23 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 35 | 38 | 40 | 28 | 25 | 23 | 21 | 22 | 23 | 25 | 27 | 29 | 31 | 34 | 36 | 38 | 40 | 44 | 46 |
| Zhytomyrska | 4 | 0 | 3 | 5 | 8 | 10 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 21 | 23 | 25 | 27 | 30 | 34 | 30 | 28 | 25 | 22 | 20 | 19 | 18 | 19 | 20 | 21 | 22 | 24 | 26 | 28 | 31 | 34 | 36 | 24 | 21 | 19 | 17 | 18 | 19 | 21 | 23 | 25 | 27 | 30 | 32 | 34 | 36 | 40 | 42 |
| Sviatoshyn | 7 | 3 | 0 | 2 | 5 | 7 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 20 | 22 | 24 | 27 | 31 | 27 | 25 | 22 | 19 | 17 | 16 | 15 | 16 | 17 | 18 | 19 | 21 | 23 | 25 | 28 | 31 | 33 | 21 | 18 | 16 | 14 | 15 | 16 | 18 | 20 | 22 | 24 | 27 | 29 | 31 | 33 | 37 | 39 |
| Nyvky | 9 | 5 | 2 | 0 | 3 | 5 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 16 | 18 | 20 | 22 | 25 | 29 | 25 | 23 | 20 | 17 | 15 | 14 | 13 | 14 | 15 | 16 | 17 | 19 | 21 | 23 | 26 | 29 | 31 | 19 | 16 | 14 | 12 | 13 | 14 | 16 | 18 | 20 | 22 | 25 | 27 | 29 | 31 | 35 | 37 |
| Beresteiska | 12 | 8 | 5 | 3 | 0 | 2 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 15 | 17 | 19 | 22 | 26 | 22 | 20 | 17 | 14 | 12 | 11 | 10 | 11 | 12 | 13 | 14 | 16 | 18 | 20 | 23 | 26 | 28 | 16 | 13 | 11 | 9 | 10 | 11 | 13 | 15 | 17 | 19 | 22 | 24 | 26 | 28 | 32 | 34 |