|
43 | 43 | 
|
44 | 44 |
|
45 | 45 |
|
| 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 | + |
| 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 | + |
| 101 | + |
46 | 102 | ## Задачи за упражнение
|
47 | 103 |
|
48 |
| -- []() |
| 104 | +- [Reconstruct Itinerary](https://leetcode.com/problems/reconstruct-itinerary) |
49 | 105 |
|
50 | 106 |
|
51 | 107 | Решения на задачите: [тук](/Tasks/tasks_15)
|
0 commit comments