Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Глава 19. Орграфы и ориентированные ациклические графы. Транзитивноесокращение. Пусть задан орграф, требуется найти орграф, который имеет то же транзитивное замыкание и минимальное число ребер среди орграфов этого
Транзитивное сокращение. Пусть задан орграф, требуется найти орграф, который имеет то же транзитивное замыкание и минимальное число ребер среди орграфов этого класса. Эта задача поддается решению (см. упражнение 19.150); однако если наложить на нее дополнительное условие, потребовав, чтобы результатом был подграф исходного графа, она сразу же становится NP-трудной. Ориентированный эвклидов путь. Существует ли на орграфе путь, соединяющий две заданных вершины, который использует каждое ребро орграфа в точности один раз? Эта задача решается довольно просто в силу тех же причин, что и соответствующая задача для неориентированных графов, которую мы рассматривали в разделе 17.7 (см. упражнение 17.92). Ориентированный маршрут почтальона. Пусть задан граф, существует ли ориентированный цикл с минимальным числом ребер, который использует каждое ребро графа, по меньшей мере, один раз (при этом он имеет возможность воспользоваться каждым конкретным ребром многократно). Как мы увидим в разделе 22.7, эта задача сводится к задаче выявления потоков с минимальной стоимостью, и в силу этого обстоятельства она поддается решению. Ориентированный гамильтонов путь. Найти в орграфе простой ориентированный путь максимальной длины. Эта задача относится к числу NP-трудных, однако она легко решается, если граф представляет собой DAG (см. упражнение 19.114). Односвязный подграф. Говорят, что граф односвязный (uniconnected), если существует самое большее один ориентированный путь между любой парой вершин. Если задан орграф и целое число k, определить, существует ли односвязный подграф, имеющий, по меньшей мере, к ребер. Известно, что для произвольного к эта задача принадлежит к категории NP-трудных. Множество вершин обратной связи. Определить, имеет ли заданный орграф подмножество, состоящее максимум из к вершин, которое содержит, по меньшей мере, одну вершину из каждого направленного цикла в G. Известно, это задача принадлежит к категории NP-трудных. Четные циклы. Определите, содержит ли заданный орграф цикл четной длины. Как было показано в разделе 17.8, это проблема не принадлежит к числу трудно разрешимых, тем не менее, никому не удалось получить алгоритм, который можно было бы использовать на практике. Так же как и в случае неориентированных графов, было исследовано великое множество задач, при этом часто определение того, является ли рассматриваемая задача легко или трудно решаемой, сама по себе является сложной проблемой (см. раздел 17.8). Как подчеркивалось на протяжении всей этой главы, некоторые обнаруженные нами факты, касающиеся орграфов, суть выражения более общих математических закономерностей, а многие из используемых нами алгоритмов имеют применение на уровнях абстракций, отличающихся от тех, на которых мы работаем. С другой стороны, понятие трудно решаемой задачи говорит нам о том, что в своем стремлении получить эффективные алгоритмы, обеспечивающие эффективное решение тех или иных задач, мы можем столкнуться с фундаментальными препятствиями. С другой стороны, классические алгоритмы, описанные в настоящей главе, имеют фундаментальное значение и находят широкое применение на практике, поскольку они предлагают эффективные решения задач, которые часто возникают в реальной жизни и не могут быть решены каким-либо другим способом. Часть 5. Алгоритмы на графах Упражнения 19.144. Внесите соответствующие изменения в программы 17.18 и 17.19, позволяющие реализовать функцию АТД распечатки эйлерова пути в орграфе, если таковой существует. Поясните назначение каждого изменения и дополнения, которые придется внести в программный код. > 19.145. Начертите дерево доминаторов орграфа 3-7 1-4 7-8 0-5 5-2 3-0 2-9 0-6 4-9 2-6 6-4 1-5 8-2 9-0 8-3 4-5 2-3 1-6 3-5 7-6 •• 19.146. Постройте класс, использующий поиск в глубину для создания представления доминаторного дерева заданного орграфа в виде родительских связей (см. раздел ссылок). о 19.147. Найдите транзитивное сокращение орграфа 3-7 1-4 7-8 0-5 5-2 3-0 2-9 0-6 4-9 2-6 6-4 1-5 8-2 9-0 8-3 4-5 2-3 1-6 3-5 7-6 • 19.148. Найдите подграф графа 3-7 1-4 7-8 0-5 5-2 3-0 2-9 0-6 4-9 2-6 6-4 1-5 8-2 9-0 8-3 4-5 2-3 1-6 3-5 7-6, имеющего то же транзитивное замыкание и минимальное число ребер среди всех таких подграфов. о 19.149. Докажите, что каждый DAG имеет уникальное транзитивное сокращение, и дайте эффективную реализацию функции АТД для вычисления транзитивного сокращения DAG. • 19.150. Постройте эффективную функцию АТД для орграфов, которая вычисляет 19.151. Предложите алгоритм, который определяет, принадлежит ли заданный орграф 19.152. Найдите односвязный подграф максимальных размеров орграфа 3-7 1-4 7-8 0-5 5-2 3-0 2-9 0-6 4-9 2-6 6-4 1-5 8-2 9-0 8-3 4-5 2-3 1-6 3-5 7-6. > 19.153. Разработайте реализацию класса орграфа, который поддерживает операции о 19.147. Решите упражнение 19.153 таким образом, чтобы запросы на вставку ребра, удаления ребра и принадлежность к сильной компоненте выполнялись за время, пропорциональное log К в худшем случае. •••19.146. Решите упражнение 19.153 таким образом, чтобы запросы на вставку ребра, удаления ребра и принадлежность к сильной компоненте выполнялись за время, близкое к постоянному (как это имеет место для алгоритмов поиска-объединения для определения связности в неориентированных графах).
|