mirror of
https://github.moeyy.xyz/https://github.com/trekhleb/javascript-algorithms.git
synced 2024-12-25 22:46:20 +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.ru-RU.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
|
||||
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),
|
||||
[_Português_](README.pt-BR.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
|
||||
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),
|
||||
[_Español_](README.es-ES.md),
|
||||
[_Turkish_](README.tr-TR.md),
|
||||
[_Українська_](README.uk-UA.md)
|
||||
|
||||
In computer science, a **linked list** is a linear collection
|
||||
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),
|
||||
[_Français_](README.fr-FR.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
|
||||
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),
|
||||
[_Français_](README.fr-FR.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
|
||||
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),
|
||||
[_Français_](README.fr-FR.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
|
||||
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:_
|
||||
[_简体中文_](README.zh-CN.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
|
||||
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