Личный технический проект: переработка исследовательского прототипа алгоритма максимального потока в понятный и проверяемый Python-модуль.
Задача:
— найти причины ошибочных результатов и зависания;
— отделить программную логику от Jupyter Notebook;
— добавить единый публичный интерфейс;
— обеспечить воспроизводимую проверку результатов.
Что сделано:
— пять вариантов Push–Relabel приведены к общему API;
— исправлены два воспроизводимых дефекта: неверный подсчёт потока при наличии рёбер, входящих в источник, и незавершение global relabeling;
— добавлена независимая эталонная реализация Edmonds–Karp;
— написаны регрессионные и сравнительные тесты;
— подготовлены README и инструкции запуска.
Проверяемый результат:
— проходят 17 тестов;
— пять вариантов сопоставлены с Edmonds–Karp на 70 малых детерминированных графах;
— проверены циклы, встречные рёбра, отсутствие пути, несколько маршрутов и другие граничные случаи;
— входные данные не изменяются.
Технологии: Python, pytest, Jupyter Notebook, Git, GitHub.
Кейс показывает, как я работаю с ошибочным или зависающим Python-кодом: локализую причину, исправляю, добавляю регрессионные тесты и оставляю понятный воспроизводимый результат.
https://github.com/tina-ds/PushRelabel