# Огляд курсу "Python та штучний інтелект"
---
## задачі, де потрібні інтелектуальні рішення
----
## задачі, де потрібні інтелектуальні рішення
- логічні задачки
- пазли
- математичні задачки
- стратегії в іграх
- симуляція інтелекту
---
## мова, яку розуміє комп'ютер
----
## мова, яку розуміє комп'ютер
З мовами все не так просто
![](https://i.imgur.com/pcILbec.png)
---
## як працює вгадування персонажа
----
#### як працює вгадування персонажа
![](https://i.imgur.com/ILcWEbx.png)
----
#### як працює вгадування персонажа
![](https://i.imgur.com/Z5QJngA.png)
----
#### як працює вгадування персонажа
- табличку не обов'язково заповнювати вручну
- нехай юзери заповнюють цю табличку
- але так, щоб вони самі про це не знали
----
#### як працює вгадування персонажа
Секрет!
- задаємо 10 питань, які ділять Y/N варіанти пополам
- в цей момент ми вже знаємо персонажа
- але задаємо ще 10 незв'язаних питань юзеру, щоб заповнити пропуски в табличці
---
## передбачення точки зустрічі
----
#### передбачення точки зустрічі
Слідування (крива погоні)
![](https://i.imgur.com/OWRQqE7.png =600x)
----
#### передбачення точки зустрічі
Математична модель
![](https://i.imgur.com/GxcR6Bm.png =600x)
----
#### передбачення точки зустрічі
Програмний код для розрахунку точки зустрічі та напрямку вильоту ракети ППО
![](https://i.imgur.com/VI1ybW8.png =600x)
---
## еволюційні (генетичні) алгоритми
----
#### еволюційні (генетичні) алгоритми
Ідея: робимо симуляції агентів з різними параметрами (так званий ДНК). Спочатку їх ДНК випадкові, вони рухаються по рандому.
![](https://i.imgur.com/J036dWy.png =600x)
----
#### еволюційні (генетичні) алгоритми
Ідея: ті агенти, які краще всього рухаються (найближче до цілі), схрещуємо їх ДНК та створюємо новий набір агентів (нова популяція).
![](https://i.imgur.com/Vq3vDNH.png =400x)
----
#### еволюційні (генетичні) алгоритми
Ідея: якщо повторити так багато разів, то в результаті залишаться агенти з ДНК, яка допомагає їм "виживати", тобто, виконувати поставлену задачу.
![](https://i.imgur.com/GVDK8pa.png =600x)
---
## перебір ходів
----
#### перебір ходів
Будуємо дерево всіх можливих ходів, якщо це можливо. Чим глибше і ширше дерево --- тим більше випадків можна розглянути.
![](https://i.imgur.com/aFLy1MB.png)
----
#### перебір ходів
Кожній ігровій позиції присвоюємо ціну. Ціна може складатись з вартості фігур, розміщень фігур та інших параметрів, головне щоб вийшло одне число --- додатнє або від'ємне.
![](https://i.imgur.com/nBp7m0A.png =400x)
---
## алгоритм Мінімакс
----
#### алгоритм Мінімакс
- будуємо дерево, враховуючи не тільки свої ходи, а й ходи суперника
- проставляємо ціну позицій на всіх листках цього дерева (останньому рівні)
![](https://i.imgur.com/dDg14Ox.png)
----
#### алгоритм Мінімакс
- починаючи на листках, заповнюємо всі інші ціни позицій
- принцип мінімакс: якщо наш хід, то максимізуємо виграш, якщо хід противника --- то мінімізуємо виграш. Це буде означати "вибираємо найкращий хід з найгірших"
----
![](https://i.imgur.com/mQqIOUE.png)
---
## симуляція гри
----
#### симуляція гри
Нам потрібне якесь середовище, де наш штучний інтелект буде працювати.
Це може бути реальний робот (Arduino, RaspberryPi), але їх може бути довго і дорого будувати.
----
#### симуляція гри
А ще роботи повільні, і тестувати ваш алгоритм на роботах займе багато часу.
Набагато швидше робити програмні симуляції. Щоб всі тести були на комп'ютерів, без фізичних роботів.
----
#### симуляція гри
Кожна комп'ютерна гра --- це міні-симуляція маленького світу, з своїми правилами та своїм штучним інтелектом.
---
## комбінаторика
----
#### комбінаторика
Правило добутку
![](https://i.imgur.com/ViUy329.png)
![](https://i.imgur.com/H6Jrp1L.png)
----
#### комбінаторика
Перестановки
![](https://i.imgur.com/qCOrGXU.png)
----
#### комбінаторика
Комбінації
![](https://i.imgur.com/Yt2VgQ1.png)
![](https://i.imgur.com/4Q9tW96.png)
---
## рекурсія
----
#### рекурсія
![](https://i.imgur.com/B28r49Q.png)
---
## пошук шляху в прямокутній сітці
----
#### пошук шляху в прямокутній сітці
Кількість можливих шляхів
![](https://i.imgur.com/C0ZIOUN.png)
----
#### пошук шляху в прямокутній сітці
Манхеттенська та Евклідова відстані
![](https://i.imgur.com/IonTCl3.png)
----
#### пошук шляху в прямокутній сітці
Мінімальна манхеттенська відстань в сітці з перешкодами
![](https://i.imgur.com/il3p1ux.png)
----
#### пошук шляху в прямокутній сітці
Пошук шляху на дошці (починаючи з кінця, в порядку зменшення чисел)
![](https://i.imgur.com/A5xcxZ4.png)
---
## графи
----
#### графи
![](https://i.imgur.com/g1YXumR.png)
----
#### графи
Graphviz --- мова для малювання графів (якщо немає ручки та листочка).
![](https://i.imgur.com/QqMvb3a.png)
----
#### графи
Графи бувають різні
![](https://i.imgur.com/77x9wm2.png)
----
#### графи
Представлення графа: список ребер
![](https://i.imgur.com/W8u3STW.png)
----
#### графи
Представлення графа: список вершин та їх сусідів
![](https://i.imgur.com/zj0pe0n.png)
----
#### графи
Представлення графа: матриця суміжності
![](https://i.imgur.com/FXbo4nz.png)
---
## пошук мінімального шляху в графі
![](https://i.imgur.com/V30dI3b.png)
---
{"metaMigratedAt":"2023-06-17T05:51:52.604Z","metaMigratedFrom":"Content","title":"Огляд курсу \"Python та штучний інтелект\"","breaks":"true","contributors":"[{\"id\":\"e587b3b3-f458-471f-8c10-88f5c3bd80d3\",\"add\":5298,\"del\":28}]"}