С 2010 года · Более 2 млн запусков инструментов в месяц
С 2010 года
Добавить в Chrome

Моя Панель Инструментов

Автоматический Режим

Сохранённых инструментов пока нет.

Премиум-версия
Похожие инструменты
Калькулятор кратчайшего пути ДейкстрыКалькулятор матрицы смежностиКалькулятор сетевого потока (Максимальный поток)
Домашняя страница > Математика > Продвинутые математические операции

Калькулятор топологической сортировки

Вычисляет топологическую сортировку ориентированного ациклического графа алгоритмом Кана или обходом в глубину. Находит циклы и показывает их путь, строит вид параллельных уровней выполнения и анимирует каждый шаг на интерактивном графе.

БесплатноБез регистрацииМгновенный результат
Калькулятор топологической сортировкиПопробуйте — бесплатно ▼
Формат ребра: A -> B (также принимаются , =>, :). Макс. 80 вершин / 800 ребер.
Алгоритм Кана (лексикографический) дает уникальный, воспроизводимый порядок. Пост-порядок DFS — это классический метод поиска в глубину.

Embed Калькулятор топологической сортировки Widget

О Калькулятор топологической сортировки

Калькулятор топологической сортировки вычисляет линейный порядок вершин ориентированного ациклического графа (DAG), при котором каждое направленное ребро от u к v ставит u перед v. Введите свой граф в виде списка ребер или списка смежности, и инструмент вернет топологический порядок, используя алгоритм Кана или пост-порядок DFS, обнаружит циклы (с точным путем цикла), сгруппирует задачи в слои параллельного выполнения, подсчитает количество допустимых порядков и анимирует каждый шаг на интерактивном графе.

Что такое топологическая сортировка?

Для данного ориентированного графа G = (V, E) топологическая сортировка (или топологический порядок) — это линейное расположение v₁, v₂, …, vₙ его вершин, такое, что для каждого ориентированного ребра (u → v) u появляется перед v в этом расположении. Топологический порядок существует тогда и только тогда, когда в графе нет направленных циклов, то есть граф является DAG. Порядок редко бывает уникальным: граф может иметь много допустимых топологических сортировок, когда сразу несколько вершин имеют нулевую степень захода.

Определение топологического порядка
Перестановка (v₁, v₂, …, vn) множества V является топологической тогда и только тогда,
когда для каждого ребра (u → v) в E: позиция(u) < позиция(v)

Алгоритмы, используемые в этом калькуляторе

Алгоритм Кана (на основе BFS, 1962)

Алгоритм Кана — самая интуитивно понятная топологическая сортировка. На каждом шаге он выбирает вершину с нулевой степенью захода (без входящих ребер), добавляет ее в выходные данные и «удаляет» ее из графа, уменьшая степень захода каждого из ее последователей. Когда несколько вершин имеют нулевую степень захода, для разрешения неоднозначности может использоваться min-heap (дающая лексикографически наименьший порядок) или очередь FIFO (дающая порядок вставки). Алгоритм Кана работает за время O(|V| + |E|) и служит детектором циклов: если после опустошения очереди какая-либо вершина все еще имеет степень захода > 0, значит, в графе есть цикл.

Алгоритм Кана (псевдокод)
Kahn(G):
  Q ← { v ∈ V : indeg(v) = 0 }
  L ← [ ]
  while Q не пуста:
    u ← Q.pop()
    L.append(u)
    for каждое ребро u → v:
      indeg(v) -= 1
      if indeg(v) = 0: Q.push(v)
  if |L| < |V|: сообщить о цикле
  else: вернуть L

Пост-порядок DFS (Тарьян, 1976)

Алгоритм DFS выполняет поиск в глубину, и когда вершина завершается (то есть все ее последователи были полностью исследованы), она помещается в стек. Реверсирование стека в конце дает допустимый топологический порядок. Обнаружение циклов происходит естественно: встреча с вершиной, которая все еще находится в процессе исследования (помечена СЕРЫМ), означает, что найдено обратное ребро, следовательно, граф не является DAG. Пост-порядок DFS также работает за время O(|V| + |E|).

Пост-порядок DFS (псевдокод)
DFS-Topo(G):
  for каждую вершину u в V: color[u] ← WHITE
  L ← пустой стек
  for каждую вершину u в V:
    if color[u] = WHITE: visit(u)
  return reverse(L)

visit(u):
  color[u] ← GRAY
  for каждое ребро u → v:
    if color[v] = GRAY: сообщить о цикле
    if color[v] = WHITE: visit(v)
  color[u] ← BLACK; L.push(u)

Слои параллельного выполнения

Послойное представление DAG разделяет его вершины на уровни так, что каждое ребро идет с уровня с меньшим номером на уровень с большим. Вершины в одном слое независимы друг от друга, поэтому они могут выполняться параллельно. Количество слоев равно длине самого длинного пути плюс один — это критический путь DAG, минимальное количество последовательных раундов, необходимых для завершения всех задач даже при неограниченном параллелизме. Этот калькулятор автоматически создает послойный вид, если входные данные являются DAG.

Обнаружение циклов

Если граф содержит ориентированный цикл, топологическая сортировка невозможна. Наш калькулятор сообщает точный путь цикла (например, A → B → C → A) и выделяет ребра цикла красным цветом на визуализации. Удаления любого одного ребра в цикле достаточно для восстановления ацикличности.

Форматы ввода

Список ребер

Записывайте каждое направленное ребро как источник -> цель, разделяя их запятыми или новыми строками. Допустимые варианты стрелок: ->, , =>, -->, :. Вы также можете объединять ребра в цепочки: A -> B -> C — это сокращение для A->B и B->C. Метки вершин могут состоять из букв, цифр, подчеркиваний, тире и точек.

A -> B, B -> C, A -> C
C -> D
Рубашка -> Галстук -> Пиджак

Список смежности

Запишите вершину, двоеточие и ее прямых последователей (вершины, на которые она указывает). Вершине без последователей все равно нужна своя строка, например D:.

A: B, C
B: D
C: D
D:

Как пользоваться этим калькулятором

  1. Выберите формат: Переключайтесь между списком ребер и списком смежности с помощью переключателей.
  2. Введите граф: Вставьте свои данные или нажмите на один из быстрых примеров (порядок одевания, учебные курсы, цели сборки, граф с циклом и другие).
  3. Выберите алгоритм: Лексикографический Кана для уникального, воспроизводимого порядка; порядок вставки для сохранения очередности ввода; пост-порядок DFS для классического метода поиска в глубину; или «Показать все», чтобы увидеть все варианты рядом.
  4. Нажмите «Сортировать топологически»: Ниже появятся порядок, данные об обнаружении цикла, послойный вид, длина критического пути, общее количество допустимых порядков и интерактивный граф.
  5. Исследуйте: Нажмите «Играть», чтобы увидеть выдачу каждой вершины шаг за шагом. Значки входящих степеней обновляются в реальном времени. Перетаскивайте любой узел для изменения компоновки.

Реальное применение

Системы сборки и компиляторы

Такие инструменты, как make, Bazel, Gradle и npm, выполняют топологическую сортировку целей сборки, чтобы каждая цель компилировалась только после всех своих зависимостей. Цикл в графе зависимостей обычно выдается как фатальная ошибка — система сборки не может решить, с чего начать.

Планирование задач

Менеджеры проектов используют DAG для фиксации зависимостей задач. Топологическая сортировка дает допустимый порядок выполнения, а послойный вид — минимальное количество раундов при неограниченном параллелизме. Самая длинная цепь — это критический путь, определяющий общую продолжительность проекта.

Планирование учебных курсов

Каталог университетских курсов — это DAG: ребра являются отношениями предварительных условий. Топологический порядок — это допустимый план обучения, а слои подсказывают студентам, какие наборы курсов они могут изучать параллельно в каждом семестре.

Пересчет электронных таблиц

При изменении ячейки электронная таблица должна пересчитать каждую зависимую ячейку в порядке зависимости — это топологическая сортировка DAG зависимостей ячеек. Циклические ссылки отвергаются приложением.

Менеджеры пакетов и загрузчики плагинов

Apt, pip, Homebrew, Maven и бесчисленные фреймворки плагинов определяют порядок установки или загрузки путем топологической сортировки своих DAG зависимостей.

Разрешение символов и планирование инструкций

Компиляторы используют топологическую сортировку для упорядочивания объявлений, а процессоры используют DAG зависимостей данных для планирования инструкций в буфере переупорядочивания без нарушения зависимостей по данным.

Подсчет топологических порядков

Для DAG с n вершинами количество различных допустимых топологических порядков может варьироваться от 1 (для полностью упорядоченной цепи) до n! (для графа без ребер). Вычисление точного количества в общем случае является #P-полной задачей, но для графов до 16 вершин этот калькулятор перечисляет их, используя формулу динамического программирования по маскам: f(S) = Σ f(S ∪ {v}) по всем v ∉ S, чьи предшественники уже находятся в S.

Сложность и производительность

Часто задаваемые вопросы

Что такое топологическая сортировка?

Топологическая сортировка ориентированного ациклического графа — это линейное упорядочение его вершин, при котором каждое направленное ребро от u к v ставит u перед v. Она представляет собой допустимый порядок обработки задач с соблюдением их зависимостей.

Какой алгоритм использует этот калькулятор?

Калькулятор запускает как алгоритм Кана, так и пост-порядок DFS. Алгоритм Кана многократно удаляет вершину с нулевой степенью захода и уменьшает степени захода ее последователей. Пост-порядок DFS выполняет поиск в глубину и инвертирует порядок завершения. Оба работают за время O(|V| + |E|).

Что если в моем графе есть цикл?

Граф с ориентированным циклом не имеет топологической сортировки. Калькулятор обнаруживает цикл, выделяет его красным цветом на визуализации и сообщает точный путь цикла, чтобы вы могли видеть, какие ребра нужно удалить, чтобы сделать граф DAG.

Что такое лексикографически наименьший топологический порядок?

Когда допустимо множество топологических порядков, лексикографически наименьший получается путем постоянного выбора алфавитно наименьшей вершины с нулевой степенью захода на каждом шаге. Стандартный режим Кана в этом калькуляторе возвращает этот уникальный порядок, который стабилен и легко воспроизводим.

Что такое послойный вид или вид по уровням?

Послойный вид группирует вершины по длине самого длинного пути от любого источника. Вершины в одном слое не имеют зависимости между собой, поэтому они могут выполняться параллельно. Количество слоев равно длине самой длинной цепочки зависимостей плюс один и дает минимальное количество параллельных раундов, необходимых для завершения всех задач.

Может ли граф иметь несколько допустимых топологических порядков?

Да. Если на любом шаге алгоритма Кана имеется несколько вершин с нулевой степенью захода, любая из них может быть выбрана следующей. Этот калькулятор подсчитывает точное количество различных топологических порядков для графов до 16 вершин.

В чем разница между алгоритмом Кана и пост-порядком DFS?

Алгоритм Кана работает сверху вниз: он многократно выбирает источники (степень захода 0) и выдает их первыми. Пост-порядок DFS работает снизу вверх: он сначала завершает стоки и добавляет их в начало порядка. Оба имеют сложность O(|V| + |E|) и создают допустимые топологические порядки, но обычно разные. Алгоритм Кана легче параллелизуется и адаптируется для лексикографического упорядочивания; DFS легче комбинировать с другими видами анализа на основе DFS, такими как поиск сильно связных компонентов.

Каков максимальный размер графа, поддерживаемый этим инструментом?

Калькулятор поддерживает до 80 вершин и 800 ребер. Подсчет общего количества допустимых топологических порядков ограничен 16 вершинами, так как задача является #P-полной и пространство состояний растет как 2ⁿ. Интерактивная визуализация и анимация алгоритмов плавно масштабируются до полного размера.

Дополнительная литература

Ссылайтесь на этот контент, страницу или инструмент так:

"Калькулятор топологической сортировки" на сайте https://ru.miniWebtool.com/калькулятор-топологической-сортировки/ от MiniWebtool, https://MiniWebtool.com/

командой miniwebtool. Обновлено: 20 апреля 2026 г.

Вы также можете попробовать наш AI Решатель Математических Задач GPT, чтобы решить ваши математические проблемы с помощью вопросов и ответов на естественном языке.

Продвинутые математические операции:

Популярные и обновлённые инструменты:

Калькулятор ангельских чиселКалькулятор совместимости по дате рожденияКалькулятор асцендента, солнечного и лунного знаков 🌞🌙✨Калькулятор знака ВенерыИзвлечение Изображений из ВидеоКонвертер футов и дюймов в сантиметрыКонвертер FPSСклеить видеоКонвертер дюймов в сантиметрыКонвертер см в футы и дюймыРазделить фото на частиКалькулятор числа жизненного путиКалькулятор числа судьбыСжать видеоАудио РазделительГенератор случайных суперспособностейЗамедлить или ускорить видеоПоиск идентификатора пользователя InstagramКонвертер фунтов в килограммыПостроитель графиков функцийКалькулятор возвращения СатурнаГенератор филвордовДобавить текст к изображениюДобавить или заменить аудио в видеоУбрать звук из видеоКонвертер мА·ч в Вт·чРазделитель видеоКалькулятор числа имениКалькулятор лунного знакаКалькулятор знака МарсаИзвлечь звук из видеоКонвертер римских цифрКонвертер дюймов в миллиметрыСоздатель GIFГенератор кроссвордовMP3-луперГенератор Камень Ножницы БумагаКалькулятор Фаренгейта в ЦельсияКалькулятор Рекомпозиции Тела⏱️ Калькулятор часовКонвертер миль в километрыКонвертер футов в метрыКалькулятор области определения и значенийГенератор штрих-кодовГенератор случайных вопросовКонвертер сантиметров в дюймыКалькулятор совместимости лунных знаковКонвертер кг в фунтыГенератор случайных цветовКалькулятор Относительного Стандартного ОтклоненияПовернуть видеоГенератор маленького текста ⁽ᶜᵒᵖʸ ⁿ ᵖᵃˢᵗᵉ⁾Удалить строки, содержащие строкуПреобразователь Обычного Времени в Десятичное ВремяГенератор развёртки конусаГенератор случайных игральных картКалькулятор баланса астрологических стихийБросок кубиковКонвертер миллиметров в дюймыКонвертер изображения в ASCII артГенератор нонограмм (Пикросс)Генератор случайных предметовКонвертер дробного времениОбрезать видеоКалькулятор смешивания цветов красокЗациклить видеоСписок високосных летКонвертер мг в млКалькулятор квадратного корняКалькулятор производныхКалькулятор Площади Неправильного МногоугольникаКалькулятор Спени Сжатия ДвигателяКонвертер акров в гектарыКонвертер Числа в ДробьHEX-конвертерКонвертер MP4 в GIFПобитовый калькуляторКалькулятор положения солнцаКалькулятор угла срезаПроверка имени пользователя в социальных сетях🖱️ Счётчик кликовКалькулятор Ватт в АмперыЛогарифмический калькуляторКалькулятор калорий при грудном вскармливанииСлучайный выбор фильмаИзвлекатель чиселПоиск ID пользователя FacebookСтатистика канала YouTubeГенератор названий группКалькулятор нумерологииГенератор случайного IMEIПоиск MAC-адресаКакое у меня счастливое число?Калькулятор калорий при беременностиКалькулятор жима лежаКалькулятор прямоугольного треугольникаКалькулятор перевода дроби в десятичное числоКонвертер угловКалькулятор числа личностиГенератор Случайных Математических ЗадачКалькулятор гипотенузыКалькулятор дозировки лекарствКалькулятор подъёмной силы гелиевого шараКалькулятор скорости езды на велосипедеКалькулятор арксинусаКалькулятор количества цифрКонвертер ГМС в десятичные градусыДобавить водяной знак на видеоКалькулятор КосинусаКонвертер радиан в градусыДвоичный калькуляторКалькулятор перевода ампер в ваттыКалькулятор биномиального распределенияКалькулятор десятичной дробиКалькулятор расстояния полетаБалансировка химических уравненийКалькулятор кВАГенератор случайных блюдУдаление Невидимых СимволовКалькулятор пределовМагический шар 8🎰 Калькулятор гарантии гачаКалькулятор конвертации дрожжейКонвертер Метров в ФутыКалькулятор сожжённых калорийКалькулятор комплексных чиселКонвертер фунтов в граммыКалькулятор типа телосложенияПреобразователь двоичного кода в десятичныйВалидатор XMLГенератор карточек бингоКалькулятор FFMIКалькулятор знака МеркурияГенератор случайных фиктивных адресовКалькулятор нескольких дробейКруговой калькуляторГенератор рэп-имёнГенератор случайных английских словКонвертер мощностиРандомайзер Имён — КолесоГенератор «Что бы вы выбрали»Калькулятор K/DКалькулятор вероятности броска кубиковКалькулятор имплантацииКалькулятор обратной функцииКонвертер размера файлаГенератор случайных координатКалькулятор деления многочленов столбикомКалькулятор номера неделиОнлайн БлокнотКалькулятор уравнений с модулемГенератор случайного времениКалькулятор коэффициента корреляцииКонвертер градусов в радианыДобавить линию к изображениюКалендарь новолуния и полнолунияКалькулятор WHtRКалькулятор композиции функцийКонвертер стоунов в килограммыКалькулятор дня года - какой сегодня день года?Калькулятор модуляКонвертер дат в римские цифрыГенератор анаграммГенератор случайных шутокРешатель Карты Карно (K-Map)Транспонировщик музыкальной тональностиВосьмеричный в двоичный конвертерГенератор случайных тем для дебатовКалькулятор теории множествГенератор «Соедини точки»Калькулятор пропорцийКалькулятор Точного Теста ФишераГенератор случайных дней рожденияКалькулятор теоремы ПифагораКалькулятор усечённого конусаРешатель НеравенствКалькулятор возрастаКалькулятор суммы квадратовКалькулятор шагов в расстояниеКалькулятор перцентиля ростаКвадратный калькуляторКонвертер столовых ложек в чайныеКонвертер чашек в граммыВосьмеричный калькуляторГенератор цветовых схемКалькулятор даты зачатияГенератор случайных персонажей RPGКалькулятор рабочего времениГенератор случайных буквПоиск Числовых ЗакономерностейТаблица ASCIIЦифровой калькулятор душиИдентификатор языка на основе ИИКалькулятор силы удара в боксеСлучайный выборГенератор зачёркнутого текстаГенератор Правда или ВызовИИ-генератор рэп-текстовКонвертер лунного календаряУлучшитель изображенийКонвертер видео для Twitter (X)Генератор геймертеговГенератор названий командГенератор никнеймовГенератор фэнтезийных имёнГенератор печенья с предсказаниямиГенератор идей для рисованияГенератор подсказок для дневникаГенератор ежедневных аффирмацийГенератор комплиментовГенератор фраз для знакомстваГенератор папиных шутокГенератор случайных фактовГенератор вопросов для викториныГенератор слов для игры «Виселица»Генератор слов для PictionaryГенератор шарадГенератор вопросов для знакомстваГенератор «Я никогда не»ИИ-толкователь сновИИ-генератор благодарственных писемИИ-генератор свадебных речейИИ-генератор пресс-релизовИИ-генератор описаний товаровИИ-генератор сценариев видеоИИ-генератор заголовков и описаний YouTubeИИ-генератор подписей для InstagramИИ-генератор заголовка и биографии LinkedInИИ-генератор пунктов резюмеИИ-генератор сопроводительных писемСведение PDFРазблокировать PDF (удаление пароля владельца)Извлечение текста из PDFИзвлечение страниц PDFСчётчик слов PDFЗащитить PDF паролемДобавить номера страниц в PDFИзменить порядок страниц PDFУдалить страницы PDFПовернуть PDFJPG в PDFPDF в JPGСжать PDFРазделить PDFОбъединить PDFКонвертер PT в PXКонвертер PX в REMКонвертер тола в граммыКонвертер индийских земельных единицКонвертер мкг в мгИИ-генератор текстов песенИИ-генератор стиховИИ-генератор историйИИ-переводчикИИ Суммаризатор ТекстаКонвертер MPH в KM/H / KM/H в MPHКонвертер узлов в мили в часКубические метры в кубические футыКонвертер кубических футов в кубические ярдыКонвертер квадратных футов в квадратные метрыКонвертер квадратных метров в квадратные футыКонвертер унций в млКонвертер мл в унцииКонвертер галлонов в литрыКонвертер литров в галлоныКонвертер кг в стоуныКонвертер километров в милиКонвертер градусов Фаренгейта в ЦельсииКонвертер градусов Цельсия в ФаренгейтыКалькулятор размера рюкзакаКалькулятор объёма сёрфбордаКалькулятор размера ручки теннисной ракеткиКалькулятор размера шлемаКалькулятор размера перчатокКонвертер размера шляпыКалькулятор размера сноубордаКалькулятор размера лыжКалькулятор размера велосипедаТаймер сплитов спидранаКалькулятор СтейблфордаКалькулятор чекаута в дартсКалькулятор экономичности боулингаКалькулятор Strike Rate в крикетеКалькулятор Net Run RateКалькулятор рейтинга ЭлоКалькулятор восстановления частоты сердечных сокращенийКалькулятор времени походаКалькулятор темпа греблиКалькулятор возрастной оценки в бегеКалькулятор FTP и зон мощностиКалькулятор бип-тестаКалькулятор баллов ACFTКалькулятор Wilks и DOTSКалькулятор вылета дискаПоиск индекса нагрузки и индекса скорости шинКалькулятор стоимости за милюКалькулятор выкупа лизингаКалькулятор смешивания октанового числаКалькулятор смеси масла для 2-тактных двигателейКалькулятор Рабочего Объёма ДвигателяКалькулятор проноса диванаКалькулятор корда дровКалькулятор CADR очистителя воздухаКалькулятор размера осушителяКалькулятор размера потолочного вентилятораКалькулятор размера шторКалькулятор размера ковраКалькулятор высоты подвески картинКалькулятор высоты установки телевизораКалькулятор размера телевизораКалькулятор объёма и плёнки для прудаКалькулятор соли для бассейнаКалькулятор объёма бассейнаКалькулятор размера водонагревателяКалькулятор эпоксидной смолыКалькулятор расстояния между балясинамиКалькулятор плинтусов и молдинговКалькулятор сайдингаКалькулятор пропитки для террасыКалькулятор газонных семянКалькулятор рулонного газонаКалькулятор асфальтаКалькулятор кубических ярдовКалькулятор длины антенныКалькулятор заполнения трубыКалькулятор последовательных и параллельных конденсаторовКалькулятор индуктивного сопротивленияКалькулятор освещения комнатыКалькулятор Люкс в ЛюменыКонвертер Люменов в ВаттыКалькулятор мощности генератораКалькулятор трёхфазной мощностиКалькулятор последовательного соединения резисторовКалькулятор тренияКалькулятор наклонной плоскостиКалькулятор механического преимуществаКалькулятор скорости звукаКалькулятор скорости волныКалькулятор плавучестиКалькулятор конечной скоростиКалькулятор длины волны де БройляКалькулятор энергии фотонаКалькулятор E=mc²Калькулятор замедления времениКалькулятор третьего закона КеплераКалькулятор второй космической скоростиКалькулятор гравитационной силыКалькулятор закона Бугера — Ламберта — БераКалькулятор уравнения НернстаКалькулятор осмотического давленияКалькулятор повышения температуры кипенияКалькулятор понижения температуры замерзанияКалькулятор процентного составаКалькулятор нормальностиКалькулятор моляльностиКонвертер pKa в KaКалькулятор Хендерсона-ХассельбахаКалькулятор теоретического выходаКалькулятор лимитирующего реагентаКалькулятор электронной конфигурацииИнтерактивная таблица МенделееваИИ Генератор Планов УроковИИ Генератор ВикторинГенератор цитирований (APA/MLA/Chicago)Калькулятор посещаемостиКалькулятор баллов APКалькулятор баллов ACTКалькулятор баллов SATКалькулятор доходов YouTube
Домашняя страница > Математика > Продвинутые математические операции > Калькулятор топологической сортировки