Skip to content

Commit a6a4d01

Browse files
authoredDec 5, 2022
feat: added ukranian translations for graph, heap, linked-list, priority-queue, queue, stack. trie (trekhleb#965)
1 parent 025b9a3 commit a6a4d01

File tree

14 files changed

+313
-14
lines changed

14 files changed

+313
-14
lines changed
 

‎src/data-structures/graph/README.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ _Read this in other languages:_
44
[_简体中文_](README.zh-CN.md),
55
[_Русский_](README.ru-RU.md),
66
[_Français_](README.fr-FR.md),
7-
[_Português_](README.pt-BR.md)
7+
[_Português_](README.pt-BR.md),
8+
[_Українська_](README.uk-UA.md)
9+
810

911
In computer science, a **graph** is an abstract data type
1012
that is meant to implement the undirected graph and
+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Граф
2+
3+
**Граф** в інформатиці - абстрактний тип даних, який має реалізовувати концепції спрямованого та неспрямованого
4+
графа у математиці, особливо у галузі теорії графів.
5+
6+
Структура даних графа складається з кінцевого (і можливо, що змінюється) набору вершин або вузлів, або точок, спільно з
7+
набором ненаправлених пар цих вершин для ненаправленого графа або набором спрямованих пар для спрямованого графа.
8+
Ці пари відомі як ребра, арки або лінії для ненаправленого графа та як стрілки, спрямовані ребра, спрямовані
9+
арки чи спрямовані лінії для спрямованого графа. Ці вершини можуть бути частиною структури графа, або зовнішніми
10+
сутностями, представленими цілими індексами або посиланнями.
11+
12+
Для різних областей застосування види графів можуть відрізнятися спрямованістю, обмеженнями на кількість зв'язків та
13+
додатковими даними про вершини або ребра. Багато структур, що становлять практичний інтерес у математиці та
14+
інформатики можуть бути представлені графами. Наприклад, будову Вікіпедії можна змоделювати за допомогою
15+
орієнтованого графа, в якому вершини – це статті, а дуги (орієнтовані ребра) – гіперпосилання.
16+
17+
![Граф](./images/graph.jpeg)
18+
19+
*Made with [okso.app](https://okso.app)*
20+
21+
## Посилання
22+
23+
- [Граф у математиці на 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))
24+
- [Структура даних Graph / Граф](https://www.youtube.com/watch?v=D0U8aFEhgKQ)

‎src/data-structures/heap/README.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ _Read this in other languages:_
77
[_Français_](README.fr-FR.md),
88
[_Português_](README.pt-BR.md),
99
[_Türkçe_](README.tr-TR.md),
10-
[_한국어_](README.ko-KR.md)
10+
[_한국어_](README.ko-KR.md),
11+
[_Українська_](README.uk-UA.md)
12+
1113

1214
In computer science, a **heap** is a specialized tree-based
1315
data structure that satisfies the heap property described
+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Купа (структура даних)
2+
3+
У комп'ютерних науках купа - це спеціалізована структура даних на кшталт дерева, яка задовольняє властивості купи:
4+
якщо B є вузлом-нащадком вузла A, то ключ (A) ≥ ключ (B). З цього випливає, що елемент із найбільшим ключем завжди
5+
є кореневим вузлом купи, тому іноді такі купи називають max-купами.
6+
7+
![MaxHeap](./images/max-heap.jpeg)
8+
9+
![Array Representation](./images/array-representation.jpeg)
10+
11+
Якщо порівняння перевернути, то найменший елемент завжди буде кореневим вузлом, такі купи називають min-купами.
12+
13+
![MinHeap](./images/min-heap.jpeg)
14+
15+
*Made with [okso.app](https://okso.app)*
16+
17+
Не існує жодних обмежень щодо того, скільки вузлів-нащадків має кожен вузол купи. На практиці їх
18+
число зазвичай трохи більше двох. Купа є максимально ефективною реалізацією абстрактного типу даних, який
19+
називається чергою із пріоритетом.
20+
21+
Вузол на вершині купи, який не має батьків, називається кореневим вузлом.
22+
23+
## Посилання
24+
25+
- [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))

‎src/data-structures/linked-list/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ _Read this in other languages:_
88
[_한국어_](README.ko-KR.md),
99
[_Español_](README.es-ES.md),
1010
[_Turkish_](README.tr-TR.md),
11+
[_Українська_](README.uk-UA.md)
1112

1213
In computer science, a **linked list** is a linear collection
1314
of data elements, in which linear order is not given by
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
# Зв'язаний список
2+
3+
Зв'язаний список — базова динамічна структура даних в інформатиці, що складається з вузлів, кожен з яких містить як дані, так посилання («зв'язку») на наступний вузол списку. Дана структура дозволяє ефективно додавати та видаляти елементи на довільній позиції у послідовності у процесі ітерації. Більш складні варіанти включають додаткові посилання, що дозволяють ефективно додавати та видаляти довільні елементи.
4+
5+
Принциповою перевагою перед масивом є структурна гнучкість: порядок елементів зв'язкового списку може збігатися з порядком розташування елементів даних у пам'яті комп'ютера, а порядок обходу списку завжди явно задається його внутрішніми зв'язками. Суть переваги у тому, що у багатьох мовах створення масиву вимагає вказати його заздалегідь. Зв'язковий список дозволяє обійти це обмеження.
6+
7+
Недоліком зв'язкових списків є те, що час доступу є лінійним (і важко для реалізації конвеєрів). Неможливий швидкий доступ (випадковий).
8+
9+
![Linked List](./images/linked-list.jpeg)
10+
11+
*Made with [okso.app](https://okso.app)*
12+
13+
## Псевдокод основних операцій
14+
15+
### Вставка
16+
17+
```text
18+
Add(value)
19+
Pre: value - значення, що додається
20+
Post: value поміщено в кінець списку
21+
n ← node(value)
22+
if head = ø
23+
head ← n
24+
tail ← n
25+
else
26+
tail.next ← n
27+
tail ← n
28+
end if
29+
end Add
30+
```
31+
32+
```text
33+
Prepend(value)
34+
Pre: value - значення, що додається
35+
Post: value поміщено на початок списку
36+
n ← node(value)
37+
n.next ← head
38+
head ← n
39+
if tail = ø
40+
tail ← n
41+
end
42+
end Prepend
43+
```
44+
45+
### Поиск
46+
47+
```text
48+
Contains(head, value)
49+
Pre: head - перший вузол у списку
50+
value - значення, яке слід знайти
51+
Post: true - value знайдено у списку, інакше false
52+
n ← head
53+
while n != ø and n.value != value
54+
n ← n.next
55+
end while
56+
if n = ø
57+
return false
58+
end if
59+
return true
60+
end Contains
61+
```
62+
63+
### Вилучення
64+
65+
```text
66+
Remove(head, value)
67+
Pre: head - перший вузол у списку
68+
value - значення, яке слід видалити
69+
Post: true - value видалено зі списку, інакше false
70+
if head = ø
71+
return false
72+
end if
73+
n ← head
74+
if n.value = value
75+
if head = tail
76+
head ← ø
77+
tail ← ø
78+
else
79+
head ← head.next
80+
end if
81+
return true
82+
end if
83+
while n.next != ø and n.next.value != value
84+
n ← n.next
85+
end while
86+
if n.next != ø
87+
if n.next = tail
88+
tail ← n
89+
end if
90+
n.next ← n.next.next
91+
return true
92+
end if
93+
return false
94+
end Remove
95+
```
96+
97+
### Обход
98+
99+
```text
100+
Traverse(head)
101+
Pre: head - перший вузол у списку
102+
Post: елементи списку пройдені
103+
n ← head
104+
while n != ø
105+
yield n.value
106+
n ← n.next
107+
end while
108+
end Traverse
109+
```
110+
111+
### Зворотний обхід
112+
113+
```text
114+
ReverseTraversal(head, tail)
115+
Pre: head и tail відносяться до одного списку
116+
Post: елементи списку пройдено у зворотному порядку
117+
if tail != ø
118+
curr ← tail
119+
while curr != head
120+
prev ← head
121+
while prev.next != curr
122+
prev ← prev.next
123+
end while
124+
yield curr.value
125+
curr ← prev
126+
end while
127+
yield curr.value
128+
end if
129+
end ReverseTraversal
130+
```
131+
132+
## Складність
133+
134+
### Тимчасова складність
135+
136+
| Читання | Пошук | Вставка | Вилучення |
137+
| :--------: | :-------: | :--------: | :-------: |
138+
| O(n) | O(n) | O(1) | O(n) |
139+
140+
### Просторова складність
141+
142+
O(n)
143+
144+
## Посилання
145+
146+
- [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)
147+
- [YouTube](https://www.youtube.com/watch?v=6snsMa4E1Os)

‎src/data-structures/priority-queue/README.md

+10-9
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,21 @@ _Read this in other languages:_
66
[_日本語_](README.ja-JP.md),
77
[_Français_](README.fr-FR.md),
88
[_Português_](README.pt-BR.md),
9-
[_한국어_](README.ko-KR.md)
9+
[_한국어_](README.ko-KR.md),
10+
[_Українська_](README.uk-UA.md)
1011

11-
In computer science, a **priority queue** is an abstract data type
12-
which is like a regular queue or stack data structure, but where
13-
additionally each element has a "priority" associated with it.
14-
In a priority queue, an element with high priority is served before
15-
an element with low priority. If two elements have the same
12+
In computer science, a **priority queue** is an abstract data type
13+
which is like a regular queue or stack data structure, but where
14+
additionally each element has a "priority" associated with it.
15+
In a priority queue, an element with high priority is served before
16+
an element with low priority. If two elements have the same
1617
priority, they are served according to their order in the queue.
1718

18-
While priority queues are often implemented with heaps, they are
19-
conceptually distinct from heaps. A priority queue is an abstract
19+
While priority queues are often implemented with heaps, they are
20+
conceptually distinct from heaps. A priority queue is an abstract
2021
concept like "a list" or "a map"; just as a list can be implemented
2122
with a linked list or an array, a priority queue can be implemented
22-
with a heap or a variety of other methods such as an unordered
23+
with a heap or a variety of other methods such as an unordered
2324
array.
2425

2526
## References
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Черга з пріоритетом
2+
3+
Черга з пріоритетом (англ. priority queue) - абстрактний тип даних в інформатиці,
4+
для кожного елемента якого можна визначити його пріоритет.
5+
6+
У черзі з пріоритетами елемент із високим пріоритетом обслуговується раніше
7+
елемент з низьким пріоритетом. Якщо два елементи мають однаковий пріоритет, вони
8+
обслуговуються відповідно до їх порядку в черзі.
9+
10+
Черга з пріоритетом підтримує дві обов'язкові операції – додати елемент та
11+
витягти максимум (мінімум).
12+
13+
Хоча пріоритетні черги часто реалізуються у вигляді куп (heaps), вони
14+
концептуально відрізняються від куп. Черга пріоритетів є абстрактною
15+
концепцією на кшталт «списку» чи «карти»; так само, як список може бути реалізований
16+
у вигляді зв'язкового списку або масиву, так і черга з пріоритетом може бути реалізована
17+
у вигляді купи або безліччю інших методів, наприклад, у вигляді невпорядкованого масиву.
18+
19+
## Посилання
20+
21+
- [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)

‎src/data-structures/queue/README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ _Read this in other languages:_
66
[_日本語_](README.ja-JP.md),
77
[_Français_](README.fr-FR.md),
88
[_Português_](README.pt-BR.md),
9-
[_한국어_](README.ko-KR.md)
9+
[_한국어_](README.ko-KR.md),
10+
[_Українська_](README.uk-UA.md)
1011

1112
In computer science, a **queue** is a particular kind of abstract data
1213
type or collection in which the entities in the collection are
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Черга
2+
3+
Черга (англ. queue) – структура даних в інформатиці, в якій елементи
4+
зберігаються у порядку їх додавання. Додавання нових елементів(enqueue)
5+
здійснюється на кінець списку. А видалення елементів (dequeue)
6+
здійснюється із початку. Таким чином черга реалізує принцип
7+
"першим увійшов – першим вийшов" (FIFO). Часто реалізується операція читання
8+
головного елемента (peek), яка повертає перший у черзі елемент,
9+
при цьому не видаляючи його. Черга є прикладом лінійної структури
10+
даних чи послідовної колекції.
11+
12+
Ілюстрація роботи з чергою.
13+
14+
![Черга](./images/queue.jpeg)
15+
16+
*Made with [okso.app](https://okso.app)*
17+
18+
## Список літератури
19+
20+
- [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))
21+
- [YouTube](https://www.youtube.com/watch?v=ll4QLNSPn60)

‎src/data-structures/stack/README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ _Read this in other languages:_
66
[_日本語_](README.ja-JP.md),
77
[_Français_](README.fr-FR.md),
88
[_Português_](README.pt-BR.md),
9-
[_한국어_](README.ko-KR.md)
9+
[_한국어_](README.ko-KR.md),
10+
[_Українська_](README.uk-UA.md)
1011

1112
In computer science, a **stack** is an abstract data type that serves
1213
as a collection of elements, with two principal operations:
+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Стек
2+
3+
Стек (англ. stack - стопка) - абстрактний тип даних, що представляє собою
4+
список елементів, організованих за принципом LIFO (останнім прийшов – першим вийшов).
5+
6+
Стек має дві ключові операції:
7+
* **додавання (push)** елемента в кінець стеку, та
8+
* **видалення (pop)**, останнього доданого елемента.
9+
10+
Додаткова операція для читання головного елемента (peek) дає доступ
11+
до останнього елементу стека без зміни самого стека.
12+
13+
Найчастіше принцип роботи стека порівнюють зі чаркою тарілок: щоб узяти другу
14+
зверху потрібно зняти верхню.
15+
16+
Ілюстрація роботи зі стеком.
17+
18+
![Стек](./images/stack.jpeg)
19+
20+
*Made with [okso.app](https://okso.app)*
21+
22+
## Посилання
23+
24+
- [Wikipedia](https://uk.wikipedia.org/wiki/%D0%A1%D1%82%D0%B5%D0%BA)
25+
- [YouTube](https://www.youtube.com/watch?v=4jh1e1YCbYc)

‎src/data-structures/trie/README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
_Read this in other languages:_
44
[_简体中文_](README.zh-CN.md),
55
[_Русский_](README.ru-RU.md),
6-
[_Português_](README.pt-BR.md)
6+
[_Português_](README.pt-BR.md),
7+
[_Українська_](README.uk-UA.md)
78

89
In computer science, a **trie**, also called digital tree and sometimes
910
radix tree or prefix tree (as they can be searched by prefixes),
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Префіксне дерево
2+
3+
**Префіксне дерево** (Також промінь, навантажене або суфіксне дерево) в інформатиці - впорядкована деревоподібна
4+
структура даних, яка використовується для зберігання динамічних множин або асоціативних масивів, де
5+
ключем зазвичай виступають рядки. Дерево називається префіксним, тому що пошук здійснюється за префіксами.
6+
7+
На відміну від бінарного дерева, вузли не містять ключів, що відповідають вузлу. Являє собою кореневе дерево, кожне
8+
ребро якого позначено якимось символом так, що для будь-якого вузла всі ребра, що з'єднують цей вузол з його синами,
9+
позначені різними символами. Деякі вузли префіксного дерева виділені (на малюнку вони підписані цифрами) і вважається,
10+
що префіксне дерево містить цей рядок-ключ тоді і тільки тоді, коли цей рядок можна прочитати на шляху з
11+
кореня до певного виділеного вузла.
12+
13+
Таким чином, на відміну від бінарних дерев пошуку, ключ, що ідентифікує конкретний вузол дерева, не явно зберігається в
14+
цьому вузлі, а неявно задається положенням цього вузла в дереві. Отримати ключ можна виписуванням поспіль символів,
15+
помічають ребра по дорозі від кореня до вузла. Ключ кореня дерева - порожній рядок. Часто у виділених вузлах зберігають
16+
додаткову інформацію, пов'язану з ключем, і зазвичай виділеними є тільки листя і, можливо, деякі
17+
внутрішні вузли.
18+
19+
![Префіксне дерево](./images/trie.jpg)
20+
21+
*Made with [okso.app](https://okso.app)*
22+
23+
На малюнку представлено префіксне дерево, що містить ключі. «A», «to», «tea», «ted», «ten», «i», «in», «inn».
24+
25+
## Посилання
26+
27+
- [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)

0 commit comments

Comments
 (0)
Please sign in to comment.