mirror of
https://github.moeyy.xyz/https://github.com/trekhleb/javascript-algorithms.git
synced 2024-12-26 23:21:18 +08:00
feat: added ukranian translations for graph, heap, linked-list, priority-queue, queue, stack. trie (#965)
This commit is contained in:
parent
025b9a390b
commit
a6a4d01f95
@ -4,7 +4,9 @@ _Read this in other languages:_
|
|||||||
[_简体中文_](README.zh-CN.md),
|
[_简体中文_](README.zh-CN.md),
|
||||||
[_Русский_](README.ru-RU.md),
|
[_Русский_](README.ru-RU.md),
|
||||||
[_Français_](README.fr-FR.md),
|
[_Français_](README.fr-FR.md),
|
||||||
[_Português_](README.pt-BR.md)
|
[_Português_](README.pt-BR.md),
|
||||||
|
[_Українська_](README.uk-UA.md)
|
||||||
|
|
||||||
|
|
||||||
In computer science, a **graph** is an abstract data type
|
In computer science, a **graph** is an abstract data type
|
||||||
that is meant to implement the undirected graph and
|
that is meant to implement the undirected graph and
|
||||||
|
24
src/data-structures/graph/README.uk-UA.md
Normal file
24
src/data-structures/graph/README.uk-UA.md
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Граф
|
||||||
|
|
||||||
|
**Граф** в інформатиці - абстрактний тип даних, який має реалізовувати концепції спрямованого та неспрямованого
|
||||||
|
графа у математиці, особливо у галузі теорії графів.
|
||||||
|
|
||||||
|
Структура даних графа складається з кінцевого (і можливо, що змінюється) набору вершин або вузлів, або точок, спільно з
|
||||||
|
набором ненаправлених пар цих вершин для ненаправленого графа або набором спрямованих пар для спрямованого графа.
|
||||||
|
Ці пари відомі як ребра, арки або лінії для ненаправленого графа та як стрілки, спрямовані ребра, спрямовані
|
||||||
|
арки чи спрямовані лінії для спрямованого графа. Ці вершини можуть бути частиною структури графа, або зовнішніми
|
||||||
|
сутностями, представленими цілими індексами або посиланнями.
|
||||||
|
|
||||||
|
Для різних областей застосування види графів можуть відрізнятися спрямованістю, обмеженнями на кількість зв'язків та
|
||||||
|
додатковими даними про вершини або ребра. Багато структур, що становлять практичний інтерес у математиці та
|
||||||
|
інформатики можуть бути представлені графами. Наприклад, будову Вікіпедії можна змоделювати за допомогою
|
||||||
|
орієнтованого графа, в якому вершини – це статті, а дуги (орієнтовані ребра) – гіперпосилання.
|
||||||
|
|
||||||
|
![Граф](./images/graph.jpeg)
|
||||||
|
|
||||||
|
*Made with [okso.app](https://okso.app)*
|
||||||
|
|
||||||
|
## Посилання
|
||||||
|
|
||||||
|
- [Граф у математиці на Wikipedia](https://uk.wikipedia.org/wiki/%D0%93%D1%80%D0%B0%D1%84_(%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0))
|
||||||
|
- [Структура даних Graph / Граф](https://www.youtube.com/watch?v=D0U8aFEhgKQ)
|
@ -7,7 +7,9 @@ _Read this in other languages:_
|
|||||||
[_Français_](README.fr-FR.md),
|
[_Français_](README.fr-FR.md),
|
||||||
[_Português_](README.pt-BR.md),
|
[_Português_](README.pt-BR.md),
|
||||||
[_Türkçe_](README.tr-TR.md),
|
[_Türkçe_](README.tr-TR.md),
|
||||||
[_한국어_](README.ko-KR.md)
|
[_한국어_](README.ko-KR.md),
|
||||||
|
[_Українська_](README.uk-UA.md)
|
||||||
|
|
||||||
|
|
||||||
In computer science, a **heap** is a specialized tree-based
|
In computer science, a **heap** is a specialized tree-based
|
||||||
data structure that satisfies the heap property described
|
data structure that satisfies the heap property described
|
||||||
|
25
src/data-structures/heap/README.uk-UA.md
Normal file
25
src/data-structures/heap/README.uk-UA.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# Купа (структура даних)
|
||||||
|
|
||||||
|
У комп'ютерних науках купа - це спеціалізована структура даних на кшталт дерева, яка задовольняє властивості купи:
|
||||||
|
якщо B є вузлом-нащадком вузла A, то ключ (A) ≥ ключ (B). З цього випливає, що елемент із найбільшим ключем завжди
|
||||||
|
є кореневим вузлом купи, тому іноді такі купи називають max-купами.
|
||||||
|
|
||||||
|
![MaxHeap](./images/max-heap.jpeg)
|
||||||
|
|
||||||
|
![Array Representation](./images/array-representation.jpeg)
|
||||||
|
|
||||||
|
Якщо порівняння перевернути, то найменший елемент завжди буде кореневим вузлом, такі купи називають min-купами.
|
||||||
|
|
||||||
|
![MinHeap](./images/min-heap.jpeg)
|
||||||
|
|
||||||
|
*Made with [okso.app](https://okso.app)*
|
||||||
|
|
||||||
|
Не існує жодних обмежень щодо того, скільки вузлів-нащадків має кожен вузол купи. На практиці їх
|
||||||
|
число зазвичай трохи більше двох. Купа є максимально ефективною реалізацією абстрактного типу даних, який
|
||||||
|
називається чергою із пріоритетом.
|
||||||
|
|
||||||
|
Вузол на вершині купи, який не має батьків, називається кореневим вузлом.
|
||||||
|
|
||||||
|
## Посилання
|
||||||
|
|
||||||
|
- [Wikipedia](https://uk.wikipedia.org/wiki/%D0%9A%D1%83%D0%BF%D0%B0_(%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B4%D0%B0%D0%BD%D0%B8%D1%85))
|
@ -8,6 +8,7 @@ _Read this in other languages:_
|
|||||||
[_한국어_](README.ko-KR.md),
|
[_한국어_](README.ko-KR.md),
|
||||||
[_Español_](README.es-ES.md),
|
[_Español_](README.es-ES.md),
|
||||||
[_Turkish_](README.tr-TR.md),
|
[_Turkish_](README.tr-TR.md),
|
||||||
|
[_Українська_](README.uk-UA.md)
|
||||||
|
|
||||||
In computer science, a **linked list** is a linear collection
|
In computer science, a **linked list** is a linear collection
|
||||||
of data elements, in which linear order is not given by
|
of data elements, in which linear order is not given by
|
||||||
|
147
src/data-structures/linked-list/README.uk-UA.md
Normal file
147
src/data-structures/linked-list/README.uk-UA.md
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
# Зв'язаний список
|
||||||
|
|
||||||
|
Зв'язаний список — базова динамічна структура даних в інформатиці, що складається з вузлів, кожен з яких містить як дані, так посилання («зв'язку») на наступний вузол списку. Дана структура дозволяє ефективно додавати та видаляти елементи на довільній позиції у послідовності у процесі ітерації. Більш складні варіанти включають додаткові посилання, що дозволяють ефективно додавати та видаляти довільні елементи.
|
||||||
|
|
||||||
|
Принциповою перевагою перед масивом є структурна гнучкість: порядок елементів зв'язкового списку може збігатися з порядком розташування елементів даних у пам'яті комп'ютера, а порядок обходу списку завжди явно задається його внутрішніми зв'язками. Суть переваги у тому, що у багатьох мовах створення масиву вимагає вказати його заздалегідь. Зв'язковий список дозволяє обійти це обмеження.
|
||||||
|
|
||||||
|
Недоліком зв'язкових списків є те, що час доступу є лінійним (і важко для реалізації конвеєрів). Неможливий швидкий доступ (випадковий).
|
||||||
|
|
||||||
|
![Linked List](./images/linked-list.jpeg)
|
||||||
|
|
||||||
|
*Made with [okso.app](https://okso.app)*
|
||||||
|
|
||||||
|
## Псевдокод основних операцій
|
||||||
|
|
||||||
|
### Вставка
|
||||||
|
|
||||||
|
```text
|
||||||
|
Add(value)
|
||||||
|
Pre: value - значення, що додається
|
||||||
|
Post: value поміщено в кінець списку
|
||||||
|
n ← node(value)
|
||||||
|
if head = ø
|
||||||
|
head ← n
|
||||||
|
tail ← n
|
||||||
|
else
|
||||||
|
tail.next ← n
|
||||||
|
tail ← n
|
||||||
|
end if
|
||||||
|
end Add
|
||||||
|
```
|
||||||
|
|
||||||
|
```text
|
||||||
|
Prepend(value)
|
||||||
|
Pre: value - значення, що додається
|
||||||
|
Post: value поміщено на початок списку
|
||||||
|
n ← node(value)
|
||||||
|
n.next ← head
|
||||||
|
head ← n
|
||||||
|
if tail = ø
|
||||||
|
tail ← n
|
||||||
|
end
|
||||||
|
end Prepend
|
||||||
|
```
|
||||||
|
|
||||||
|
### Поиск
|
||||||
|
|
||||||
|
```text
|
||||||
|
Contains(head, value)
|
||||||
|
Pre: head - перший вузол у списку
|
||||||
|
value - значення, яке слід знайти
|
||||||
|
Post: true - value знайдено у списку, інакше false
|
||||||
|
n ← head
|
||||||
|
while n != ø and n.value != value
|
||||||
|
n ← n.next
|
||||||
|
end while
|
||||||
|
if n = ø
|
||||||
|
return false
|
||||||
|
end if
|
||||||
|
return true
|
||||||
|
end Contains
|
||||||
|
```
|
||||||
|
|
||||||
|
### Вилучення
|
||||||
|
|
||||||
|
```text
|
||||||
|
Remove(head, value)
|
||||||
|
Pre: head - перший вузол у списку
|
||||||
|
value - значення, яке слід видалити
|
||||||
|
Post: true - value видалено зі списку, інакше false
|
||||||
|
if head = ø
|
||||||
|
return false
|
||||||
|
end if
|
||||||
|
n ← head
|
||||||
|
if n.value = value
|
||||||
|
if head = tail
|
||||||
|
head ← ø
|
||||||
|
tail ← ø
|
||||||
|
else
|
||||||
|
head ← head.next
|
||||||
|
end if
|
||||||
|
return true
|
||||||
|
end if
|
||||||
|
while n.next != ø and n.next.value != value
|
||||||
|
n ← n.next
|
||||||
|
end while
|
||||||
|
if n.next != ø
|
||||||
|
if n.next = tail
|
||||||
|
tail ← n
|
||||||
|
end if
|
||||||
|
n.next ← n.next.next
|
||||||
|
return true
|
||||||
|
end if
|
||||||
|
return false
|
||||||
|
end Remove
|
||||||
|
```
|
||||||
|
|
||||||
|
### Обход
|
||||||
|
|
||||||
|
```text
|
||||||
|
Traverse(head)
|
||||||
|
Pre: head - перший вузол у списку
|
||||||
|
Post: елементи списку пройдені
|
||||||
|
n ← head
|
||||||
|
while n != ø
|
||||||
|
yield n.value
|
||||||
|
n ← n.next
|
||||||
|
end while
|
||||||
|
end Traverse
|
||||||
|
```
|
||||||
|
|
||||||
|
### Зворотний обхід
|
||||||
|
|
||||||
|
```text
|
||||||
|
ReverseTraversal(head, tail)
|
||||||
|
Pre: head и tail відносяться до одного списку
|
||||||
|
Post: елементи списку пройдено у зворотному порядку
|
||||||
|
if tail != ø
|
||||||
|
curr ← tail
|
||||||
|
while curr != head
|
||||||
|
prev ← head
|
||||||
|
while prev.next != curr
|
||||||
|
prev ← prev.next
|
||||||
|
end while
|
||||||
|
yield curr.value
|
||||||
|
curr ← prev
|
||||||
|
end while
|
||||||
|
yield curr.value
|
||||||
|
end if
|
||||||
|
end ReverseTraversal
|
||||||
|
```
|
||||||
|
|
||||||
|
## Складність
|
||||||
|
|
||||||
|
### Тимчасова складність
|
||||||
|
|
||||||
|
| Читання | Пошук | Вставка | Вилучення |
|
||||||
|
| :--------: | :-------: | :--------: | :-------: |
|
||||||
|
| O(n) | O(n) | O(1) | O(n) |
|
||||||
|
|
||||||
|
### Просторова складність
|
||||||
|
|
||||||
|
O(n)
|
||||||
|
|
||||||
|
## Посилання
|
||||||
|
|
||||||
|
- [Wikipedia](https://uk.wikipedia.org/wiki/%D0%97%D0%B2%27%D1%8F%D0%B7%D0%B0%D0%BD%D0%B8%D0%B9_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA)
|
||||||
|
- [YouTube](https://www.youtube.com/watch?v=6snsMa4E1Os)
|
@ -6,7 +6,8 @@ _Read this in other languages:_
|
|||||||
[_日本語_](README.ja-JP.md),
|
[_日本語_](README.ja-JP.md),
|
||||||
[_Français_](README.fr-FR.md),
|
[_Français_](README.fr-FR.md),
|
||||||
[_Português_](README.pt-BR.md),
|
[_Português_](README.pt-BR.md),
|
||||||
[_한국어_](README.ko-KR.md)
|
[_한국어_](README.ko-KR.md),
|
||||||
|
[_Українська_](README.uk-UA.md)
|
||||||
|
|
||||||
In computer science, a **priority queue** is an abstract data type
|
In computer science, a **priority queue** is an abstract data type
|
||||||
which is like a regular queue or stack data structure, but where
|
which is like a regular queue or stack data structure, but where
|
||||||
|
21
src/data-structures/priority-queue/README.uk-UA.md
Normal file
21
src/data-structures/priority-queue/README.uk-UA.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Черга з пріоритетом
|
||||||
|
|
||||||
|
Черга з пріоритетом (англ. priority queue) - абстрактний тип даних в інформатиці,
|
||||||
|
для кожного елемента якого можна визначити його пріоритет.
|
||||||
|
|
||||||
|
У черзі з пріоритетами елемент із високим пріоритетом обслуговується раніше
|
||||||
|
елемент з низьким пріоритетом. Якщо два елементи мають однаковий пріоритет, вони
|
||||||
|
обслуговуються відповідно до їх порядку в черзі.
|
||||||
|
|
||||||
|
Черга з пріоритетом підтримує дві обов'язкові операції – додати елемент та
|
||||||
|
витягти максимум (мінімум).
|
||||||
|
|
||||||
|
Хоча пріоритетні черги часто реалізуються у вигляді куп (heaps), вони
|
||||||
|
концептуально відрізняються від куп. Черга пріоритетів є абстрактною
|
||||||
|
концепцією на кшталт «списку» чи «карти»; так само, як список може бути реалізований
|
||||||
|
у вигляді зв'язкового списку або масиву, так і черга з пріоритетом може бути реалізована
|
||||||
|
у вигляді купи або безліччю інших методів, наприклад, у вигляді невпорядкованого масиву.
|
||||||
|
|
||||||
|
## Посилання
|
||||||
|
|
||||||
|
- [Wikipedia](https://uk.wikipedia.org/wiki/%D0%A7%D0%B5%D1%80%D0%B3%D0%B0_%D0%B7_%D0%BF%D1%80%D1%96%D0%BE%D1%80%D0%B8%D1%82%D0%B5%D1%82%D0%BE%D0%BC)
|
@ -6,7 +6,8 @@ _Read this in other languages:_
|
|||||||
[_日本語_](README.ja-JP.md),
|
[_日本語_](README.ja-JP.md),
|
||||||
[_Français_](README.fr-FR.md),
|
[_Français_](README.fr-FR.md),
|
||||||
[_Português_](README.pt-BR.md),
|
[_Português_](README.pt-BR.md),
|
||||||
[_한국어_](README.ko-KR.md)
|
[_한국어_](README.ko-KR.md),
|
||||||
|
[_Українська_](README.uk-UA.md)
|
||||||
|
|
||||||
In computer science, a **queue** is a particular kind of abstract data
|
In computer science, a **queue** is a particular kind of abstract data
|
||||||
type or collection in which the entities in the collection are
|
type or collection in which the entities in the collection are
|
||||||
|
21
src/data-structures/queue/README.uk-UA.md
Normal file
21
src/data-structures/queue/README.uk-UA.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Черга
|
||||||
|
|
||||||
|
Черга (англ. queue) – структура даних в інформатиці, в якій елементи
|
||||||
|
зберігаються у порядку їх додавання. Додавання нових елементів(enqueue)
|
||||||
|
здійснюється на кінець списку. А видалення елементів (dequeue)
|
||||||
|
здійснюється із початку. Таким чином черга реалізує принцип
|
||||||
|
"першим увійшов – першим вийшов" (FIFO). Часто реалізується операція читання
|
||||||
|
головного елемента (peek), яка повертає перший у черзі елемент,
|
||||||
|
при цьому не видаляючи його. Черга є прикладом лінійної структури
|
||||||
|
даних чи послідовної колекції.
|
||||||
|
|
||||||
|
Ілюстрація роботи з чергою.
|
||||||
|
|
||||||
|
![Черга](./images/queue.jpeg)
|
||||||
|
|
||||||
|
*Made with [okso.app](https://okso.app)*
|
||||||
|
|
||||||
|
## Список літератури
|
||||||
|
|
||||||
|
- [Wikipedia](https://uk.wikipedia.org/wiki/%D0%A7%D0%B5%D1%80%D0%B3%D0%B0_(%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B4%D0%B0%D0%BD%D0%B8%D1%85))
|
||||||
|
- [YouTube](https://www.youtube.com/watch?v=ll4QLNSPn60)
|
@ -6,7 +6,8 @@ _Read this in other languages:_
|
|||||||
[_日本語_](README.ja-JP.md),
|
[_日本語_](README.ja-JP.md),
|
||||||
[_Français_](README.fr-FR.md),
|
[_Français_](README.fr-FR.md),
|
||||||
[_Português_](README.pt-BR.md),
|
[_Português_](README.pt-BR.md),
|
||||||
[_한국어_](README.ko-KR.md)
|
[_한국어_](README.ko-KR.md),
|
||||||
|
[_Українська_](README.uk-UA.md)
|
||||||
|
|
||||||
In computer science, a **stack** is an abstract data type that serves
|
In computer science, a **stack** is an abstract data type that serves
|
||||||
as a collection of elements, with two principal operations:
|
as a collection of elements, with two principal operations:
|
||||||
|
25
src/data-structures/stack/README.uk-UA.md
Normal file
25
src/data-structures/stack/README.uk-UA.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# Стек
|
||||||
|
|
||||||
|
Стек (англ. stack - стопка) - абстрактний тип даних, що представляє собою
|
||||||
|
список елементів, організованих за принципом LIFO (останнім прийшов – першим вийшов).
|
||||||
|
|
||||||
|
Стек має дві ключові операції:
|
||||||
|
* **додавання (push)** елемента в кінець стеку, та
|
||||||
|
* **видалення (pop)**, останнього доданого елемента.
|
||||||
|
|
||||||
|
Додаткова операція для читання головного елемента (peek) дає доступ
|
||||||
|
до останнього елементу стека без зміни самого стека.
|
||||||
|
|
||||||
|
Найчастіше принцип роботи стека порівнюють зі чаркою тарілок: щоб узяти другу
|
||||||
|
зверху потрібно зняти верхню.
|
||||||
|
|
||||||
|
Ілюстрація роботи зі стеком.
|
||||||
|
|
||||||
|
![Стек](./images/stack.jpeg)
|
||||||
|
|
||||||
|
*Made with [okso.app](https://okso.app)*
|
||||||
|
|
||||||
|
## Посилання
|
||||||
|
|
||||||
|
- [Wikipedia](https://uk.wikipedia.org/wiki/%D0%A1%D1%82%D0%B5%D0%BA)
|
||||||
|
- [YouTube](https://www.youtube.com/watch?v=4jh1e1YCbYc)
|
@ -3,7 +3,8 @@
|
|||||||
_Read this in other languages:_
|
_Read this in other languages:_
|
||||||
[_简体中文_](README.zh-CN.md),
|
[_简体中文_](README.zh-CN.md),
|
||||||
[_Русский_](README.ru-RU.md),
|
[_Русский_](README.ru-RU.md),
|
||||||
[_Português_](README.pt-BR.md)
|
[_Português_](README.pt-BR.md),
|
||||||
|
[_Українська_](README.uk-UA.md)
|
||||||
|
|
||||||
In computer science, a **trie**, also called digital tree and sometimes
|
In computer science, a **trie**, also called digital tree and sometimes
|
||||||
radix tree or prefix tree (as they can be searched by prefixes),
|
radix tree or prefix tree (as they can be searched by prefixes),
|
||||||
|
27
src/data-structures/trie/README.uk-UA.md
Normal file
27
src/data-structures/trie/README.uk-UA.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Префіксне дерево
|
||||||
|
|
||||||
|
**Префіксне дерево** (Також промінь, навантажене або суфіксне дерево) в інформатиці - впорядкована деревоподібна
|
||||||
|
структура даних, яка використовується для зберігання динамічних множин або асоціативних масивів, де
|
||||||
|
ключем зазвичай виступають рядки. Дерево називається префіксним, тому що пошук здійснюється за префіксами.
|
||||||
|
|
||||||
|
На відміну від бінарного дерева, вузли не містять ключів, що відповідають вузлу. Являє собою кореневе дерево, кожне
|
||||||
|
ребро якого позначено якимось символом так, що для будь-якого вузла всі ребра, що з'єднують цей вузол з його синами,
|
||||||
|
позначені різними символами. Деякі вузли префіксного дерева виділені (на малюнку вони підписані цифрами) і вважається,
|
||||||
|
що префіксне дерево містить цей рядок-ключ тоді і тільки тоді, коли цей рядок можна прочитати на шляху з
|
||||||
|
кореня до певного виділеного вузла.
|
||||||
|
|
||||||
|
Таким чином, на відміну від бінарних дерев пошуку, ключ, що ідентифікує конкретний вузол дерева, не явно зберігається в
|
||||||
|
цьому вузлі, а неявно задається положенням цього вузла в дереві. Отримати ключ можна виписуванням поспіль символів,
|
||||||
|
помічають ребра по дорозі від кореня до вузла. Ключ кореня дерева - порожній рядок. Часто у виділених вузлах зберігають
|
||||||
|
додаткову інформацію, пов'язану з ключем, і зазвичай виділеними є тільки листя і, можливо, деякі
|
||||||
|
внутрішні вузли.
|
||||||
|
|
||||||
|
![Префіксне дерево](./images/trie.jpg)
|
||||||
|
|
||||||
|
*Made with [okso.app](https://okso.app)*
|
||||||
|
|
||||||
|
На малюнку представлено префіксне дерево, що містить ключі. «A», «to», «tea», «ted», «ten», «i», «in», «inn».
|
||||||
|
|
||||||
|
## Посилання
|
||||||
|
|
||||||
|
- [Wikipedia](https://uk.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D1%84%D1%96%D0%BA%D1%81%D0%BD%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE)
|
Loading…
Reference in New Issue
Block a user