top of page
блог
// Корисне та цікаве під каву
алгоритми


Big O та асимптотичний аналіз: як оцінити складність алгоритмів
Коли є два алгоритми, що розв'язують одну задачу, хочеться заздалегідь знати, який із них швидший — ще до того, як писати код. Саме для цього існує асимптотичний аналіз і нотація Big O (O велике). У цій статті розберемо, як рахувати складність алгоритмів, що означають записи на кшталт O(n), O(log n) чи O(n²), і як аналізувати цикли та рекурсію на конкретних прикладах. Навіщо взагалі оцінювати час роботи алгоритму Здавалося б, можна просто запустити код і заміряти час. Але з ц
Ivan Petrushenko
14 лип.Читати 5 хв


Бінарний пошук і бінпошук по відповіді
Бінарний пошук — той алгоритм, який усі «знають», але майже ніхто не пише з першого разу без помилок на одиницю. Причина проста: його зазвичай вчать як рецепт: l, r, m, ділимо навпіл. Але насправді бінарний пошук треба розуміти через інваріант. А ще його майже ніколи не показують у тій формі, в якій він реально трапляється на роботі: не «знайти елемент у масиві», а «знайти мінімальне значення параметра, при якому система ще витримує навантаження». Розберемо обидва випадки. 1.
Ivan Petrushenko
9 лип.Читати 6 хв


BFS і DFS: алгоритми обходу графа і їх складність
BFS і DFS — два фундаментальні алгоритми обходу графа. Обидва відвідують кожну вершину рівно один раз, але роблять це в різному порядку і через різні структури даних. Саме порядок обходу визначає, яка задача буде вирішена коректно, а яка ні. Як працює BFS BFS алгоритм (Breadth-First Search, обхід у ширину) обходить граф рівень за рівнем. Спочатку всі сусіди стартової вершини, потім їхні сусіди, і так далі. Для цього використовується черга (queue) — структура FIFO: першою обро
Yuliia CS Osvita
2 лип.Читати 2 хв


Жадібність в роботі: як влаштований алгоритм Dijkstra
Алгоритм нідерландського вченого Едсгера Дейкстри знаходить найкоротші шляхи від однієї вершини графа до всіх інших у зваженому графі з невід'ємними вагами. Саме на ньому працює більшість навігаційних систем: граф — це дорожня мережа, ваги — відстані або час у дорозі, стартова вершина — ваше поточне місцезнаходження. Задача зводиться до пошуку оптимального маршруту, і Дейкстра вирішує її ефективно. Dijkstra не працює коректно з графами, що містять ребра з від'ємними вагами, т
Yuliia CS Osvita
30 черв.Читати 3 хв


Алгоритм Bellman-Ford: пошук найкоротшого шляху з від'ємними вагами
Уявіть граф, де деякі ребра мають від'ємну вагу. Не абстрактно, а цілком реально: наприклад, фінансова мережа, де конвертація валют через певний маршрут дає прибуток, а не витрату. Або логістика, де деякі переміщення субсидовані і знижують загальну вартість маршруту. Саме для таких задач існує Bellman-Ford — алгоритм пошуку найкоротшого шляху, який коректно працює з від'ємними вагами і вміє виявляти негативні цикли. За це він платить вищою складністю, але в задачах, де вага р
Yuliia CS Osvita
26 черв.Читати 4 хв