An open API service indexing awesome lists of open source software.

https://github.com/romanturas/goit-algo-fp

GoIt Algorythms Final Project
https://github.com/romanturas/goit-algo-fp

Last synced: 11 months ago
JSON representation

GoIt Algorythms Final Project

Awesome Lists containing this project

README

          

## Завдання 1.
Файл: `task_1.py`

Структури даних. Сортування. Робота з однозв'язним списком

## Завдання 2.
Файл: `task_2.py`

Рекурсія. Створення фрактала “дерево Піфагора” за допомогою рекурсії

## Завдання 3.
Файл: `task_3.py`

Дерева, алгоритм Дейкстри

## Завдання 4.
Файл: `task_4.py`

### Аналіз коду
**Цей код створює і візуалізує бінарне дерево за допомогою бібліотеки `networkx та matplotlib`, що допомагає візуально зрозуміти структуру дерева та його вузли.**

### Клас Node:

Визначає клас Node, який представляє вузол у бінарному дереві.

Кожен вузол має три атрибути:
- **left:** посилання на лівого нащадка.
- **right:** посилання на правого нащадка.
- **val:** значення, яке зберігається в вузлі.
- **color:** додатковий аргумент, що визначає колір вузла.
- **id:** унікальний ідентифікатор, що генерується за допомогою бібліотеки uuid, для ідентифікації кожного вузла.

#### Функція add_edges:

Додає зв'язки між вузлами дерева у граф networkx.

Рекурсивно викликається для кожного вузла та його нащадків.
При цьому, враховуються координати (x, y) вузлів для правильного розташування на графі.

#### Функція draw_tree:

Створює граф `networkx.DiGraph` та визначає початкові позиції для вузлів дерева.

Викликає `add_edges` для додавання зв'язків між вузлами.
Визначає кольори та мітки для вузлів.

Використовує `matplotlib` для візуалізації графа.

#### Створення та відображення дерева:

Створюється бінарне дерево з декількома вузлами.

Викликається функція draw_tree для візуалізації дерева.

## Завдання 5.
Файл: `task_5.py`

Візуалізація обходу бінарного дерева

## Завдання 6.
Файл: `task_6.py`

Жадібні алгоритми та динамічне програмування

**Жадібний алгоритм:** Вибирає страви на основі максимального співвідношення калорій до вартості, доки не буде вичерпано бюджет. Це швидкий і простий алгоритм, але не завжди дає оптимальне рішення.

**Алгоритм динамічного програмування:** Створює таблицю значень для кожного можливого бюджету і страви, щоб знайти максимальну калорійність. Це точний метод, але вимагає більше часу та пам'яті.

## Завдання 7.
Файл: `task_7.py`

Використання методу Монте-Карло

**Порівняння з аналітичними ймовірностями**
Результати, отримані методом Монте-Карло, будуть дуже близькі до аналітичних ймовірностей, особливо при великій кількості симуляцій. Графік допоможе наочно побачити цю відповідність.