Skip to content

Commit 1f8c174

Browse files
committed
Add Hamiltonian path and Complexity classes, NP materials
1 parent 44dacc5 commit 1f8c174

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed

Seminars/sem_15/README.md

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,65 @@
4343
![Complex Eulerian path and cycle graphs](media/complex_eulerian_path_and_cycle.png)
4444

4545

46+
## Хамилтонов път и Хамилтонов цикъл
47+
48+
### Хамилтонов път (Hamiltonian path)
49+
50+
- Хамилтоновият път минава през всеки един **връх** на даден граф само по един път.
51+
- Не е нужно да използва всяко едно ребро за построяване на пътя, може да използва някое ребро повече от веднъж.
52+
- Проверката дали граф има Хамилтонов път/ цикъл е *NP complete problem*
53+
54+
### Хамилтонов цикъл (Hamiltonian cycle)
55+
56+
- Частен случай на Хамилтоновия път.
57+
- Хамилтоновият цикъл е път, който минава всеки един **връх** на даден на даден граф само по един път, като свършва във върха, от който е тръгнал.
58+
- Проблемът за намирането на минимален Хамилтонов цикъл е известен като *The Traveling Salesman Problem* (*NP hard problem*).
59+
60+
Пример:
61+
62+
![Hamiltonian path and cycle example](media/hamiltonian_path_and_cycle.png)
63+
64+
- Хамилтонов път - *ABCED*
65+
- Хамилтонов цикъл - *ABDECA*
66+
67+
## P, NP, NP complete, NP hard проблеми
68+
69+
### Complexity class P
70+
71+
- Проблеми, които **могат** да се **решат** за полиномиално време.
72+
- Сложността на решението може да се представи като *O(N<sup>k</sup>)* за някое *k*.
73+
- Включва константна, квадратична, енлог сложност. (*O(1) = O(N<sup>0</sup>), O(NlogN) < O(N<sup>2</sup>)*)
74+
- Съществува ли Ойлеров път в граф е проблем от *class P*.
75+
76+
### Complexity class NP
77+
78+
- Проблеми, които **не могат** да се **решат** за полиномиално време.
79+
- Все още не съществува доказателство, че *P = NP*, нито че *P != NP*.
80+
- За полиномиално време може да се **провери** дали предложено решение е валидно.
81+
- Примери за неполиномиални сложности са *2<sup>N</sup>, 3<sup>N</sup>, N!, N!NlogN* и т.н.
82+
- Съществува ли Хамилтонов път в граф е проблем от *class NP*.
83+
84+
*1 < logN < sqrtN < N < NlogN < N<sup>2</sup> < N<sup>3</sup> < 2<sup>N</sup> < 3<sup>N</sup> < N! < N<sup>N</sup>*
85+
86+
### Complexity class NP complete
87+
88+
- Подмножество от всички *NP* проблеми (подмножество и на *NP hard* проблемите).
89+
- Един *NP complete* проблем може да се преобразува в друг такъв за полиномиално време.
90+
- Ако се намери полиномиално решение на един *NP complete* проблем, то решава всеки един *NP complete* проблем за полиномиално време.
91+
- [Примери](https://en.wikipedia.org/wiki/List_of_NP-complete_problems): Съществува ли Хамилтонов път в граф и Най-дълъг път в граф са проблеми от *NP complete*.
92+
93+
### Complexity class NP hard
94+
95+
- Всички проблеми, които са поне толкова сложни, колкото най-сложните проблеми от *NP* класа.
96+
- Дори да се предложи решение, **не винаги е възможно** да се провери за полиномиално време дали то е валидно. (Възможно е при *NP complete* проблем)
97+
- Намиране на бързо решение за всички *NP complete* проблеми, не означава намиране на бързо решение за всички *NP hard* проблеми.
98+
- *The Traveling Salesman Problem* е пример за *NP hard* проблем - дори да се предложи решение за най-кратък Хамилтонов цикъл не може лесно да се провери дали наистина то е оптималното.
99+
100+
![P, NP, NP complete, NP hard problems diagram from Wikipedia](https://upload.wikimedia.org/wikipedia/commons/a/a0/P_np_np-complete_np-hard.svg)
101+
46102
## Задачи за упражнение
47103

48-
- []()
104+
- [Reconstruct Itinerary](https://leetcode.com/problems/reconstruct-itinerary)
49105

50106

51107
Решения на задачите: [тук](/Tasks/tasks_15)
76.4 KB
Loading

0 commit comments

Comments
 (0)