Найти в Дзене
Алгоритмы

Алгоритмы

Алгоритмы на Python
подборка · 10 материалов
Big O в Python: Как не утонуть в океане алгоритмов, или Почему ваш код тормозит как черепаха в сиропе
(С примерами из жизни, шутками и намёком на просветление, но это не точно) Представьте, что вы готовите утренний кофе. Вы можете: 1. Взять чашку из шкафа (O(1)). 2. Перебрать все шкафы в поисках чашки (O(n)). 3. Устроить квест с проверкой каждой полки, каждой чашки и их обсуждением с котом (O(n²)). Big O — это ваш гид по выбору оптимального пути. А если вы выбрали третий вариант, возможно, кофе вам уже не поможет. Big O — это способ описать, как время работы или память алгоритма растут с увеличением входных данных...
Реализация простого блокчейна на Python
Изучаем основы технологии блокчейн через практику Блокчейн — это цепочка блоков, хранящих данные в защищенной и неизменяемой форме. Каждый блок содержит: - Данные (транзакции, контракты и т.д.). - Хеш — уникальная цифровая подпись блока. - Хеш предыдущего блока, что обеспечивает связность цепочки. Эта технология лежит в основе Bitcoin и Ethereum, но её можно адаптировать для любых задач, требующих прозрачности и безопасности. Реализуем класс Block: Каждый блок хранит индекс, метку времени, данные, хеш предыдущего блока и собственный хеш, вычисленный через SHA-256...
P2P-сети на Python: основы и реализация
Введение P2P-сети (peer-to-peer) — это децентрализованные сети, где каждый участник (узел или пир) равноправен и может выступать как клиентом, так и сервером. В отличие от традиционной клиент-серверной модели, здесь нет центрального узла, что обеспечивает устойчивость к отказам и масштабируемость. Такие сети используются в файлообменных системах (BitTorrent), блокчейнах (Bitcoin) и мессенджерах. В этой статье мы рассмотрим, как создать простую P2P-сеть на Python. 1. Децентрализация: Нет центрального сервера — узлы взаимодействуют напрямую...
Конечные автоматы в Python: управление состояниями и переходами
Конечный автомат (Finite State Machine, FSM) — это математическая модель, используемая для описания поведения систем, которые могут находиться в одном из конечного числа состояний и переходить между ними в ответ на события. В программировании FSM применяется для управления сложной логикой, где важно чётко определить условия переходов и действий. Например: - Обработка заказов (состояния: «создан», «оплачен», «отгружен»). - Управление IoT-устройствами (состояния: «включён», «спящий режим», «ошибка»)...
Метод Монте-Карло в Python: основы и примеры реализации
Метод Монте-Карло — это мощный численный подход, основанный на использовании случайных выборок для решения сложных задач. Он находит применение в физике, финансах, машинном обучении и других областях. В этой статье мы разберем основы метода и покажем, как реализовать его в Python. Метод Монте-Карло использует многократную генерацию случайных данных для приближенного вычисления результатов. Его преимущества: - Простота реализации даже для многомерных задач. - Универсальность — применим там, где аналитические методы сложны...
Решение задачи коммивояжёра на Python: методы и реализация
Задача коммивояжёра (Traveling Salesman Problem, TSP) — одна из самых известных NP-сложных задач в комбинаторной оптимизации. Её суть заключается в поиске кратчайшего маршрута, проходящего через все заданные города ровно по одному разу с возвратом в исходную точку. В этой статье мы рассмотрим несколько подходов к решению TSP на Python, включая точные и эвристические методы. Для небольшого числа городов (N ≤ 10) можно использовать метод полного перебора всех возможных маршрутов. Хотя алгоритм имеет факториальную сложность O(N!), он гарантирует нахождение оптимального решения...