Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Глава 17, Свойства и типы графов. Как и множество других предметных областей, которые приходилось изучать, алго­ритмическое исследование графов возникло сравнительно недавно








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

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

Географические карты. Путешественник, прежде чем отправиться в путь, желает по­лучить ответ на вопросы типа: " Какой маршрут из Принстона в Сан-Хосе потребует наи­меньших расходов? " Пассажир, для которого время дороже денег, хотел бы получить от­вет на такой вопрос: " Каким путем быстрее всего добраться из Принстона в Сан-Хосе? " Чтобы ответить на вопросы подобного рода, мы выполняем обработку информации, ха­рактеризующей соединения (пути следования) между элементами (городами и населенны­ми пунктами).

Гипертекст. Когда мы просматриваем Web-каталоги, мы сталкиваемся с документа­ми, содержащими различные ссылки (соединения) на другие документы, и переходим от документа к документу, щелкая мышью на этих ссылках. Сама по себе " всемирная пау­тина" представляет собой граф, в котором в качестве элементов выступают документы, а соединения суть связи. Алгоритмы обработки графов являются важными компонентами поисковых механизмов, которые помогают определить местоположение информации в Web.

Микросхемы. Микросхемы содержат такие элементы, как транзисторы, резисторы, конденсаторы, которые связаны между собой сложнейшим образом. Для управления ма­шинами, изготавливающими микросхемы, и для проверки, выполняют ли эти цепи задан­ные функции, используются компьютеры. Мы хотим получить ответы на простые вопросы наподобие " Имеются ли в цепи условия для короткого замыкания? " и на более сложные вопросы, такие как " Можно ли скомпоновать микросхему на кристалле таким образом, чтобы шины не пересекались? ". В данном случае, ответ на первый вопрос зависит толь­ко от свойств соединений (шин), в то время как для ответа на второй вопрос потребует­ся подробная информация о шинах, элементах, которые эти шины соединяют, и физи­ческих ограничениях, накладываемых кристаллом.

Составление расписаний. Производственный процесс требует решения различных за­дач под воздействием некоторого множества ограничений, по условиям которых реше­ние одной задачи не может быть начато до тех пор, пока не будет завершено решение другой задачи. Мы представляем эти ограничения в виде соединений между этими зада­чами (элементами), при этом перед нами возникает задача составления расписаний (scheduling) в ее классическом виде: как построить временной график решения задач та­ким образом, чтобы удовлетворить заданным ограничениям и завершить данный процесс за минимально возможное время?

Транзакции. Телефонная компания поддерживает базу данных телефонного трафика. В этом случае соединения представляют телефонные вызовы. Мы заинтересованы в том,



Часть 5. Алгоритмы на графах


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

Задачи поиска сочетаний. Студенты обращаются с заявлениями на замещение должно­стей в таких общественных организациях, как общественные клубы, университеты или высшие медицинские учебные заведения. Элементы соответствуют студентам и институ­там, тогда как связи соответствуют приложениям. Мы хотим найти методы, устанавлива­ющие соответствие между вакантными должностями и заинтересованными в их получе­нии студентами.

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

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

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

Нам уже приходилось сталкиваться с графами в части 1. В самом деле, первые алго­ритмы, которые мы изучали самым подробным образом, т.е. алгоритмы объединения-по­иска, описанные в главе 1, представляют собой простейшие алгоритмы на графах. Мы также использовали графы в главе 3 в качестве иллюстрации приложения двухмерных массивов и связных списков, в главе 5 графы послужили иллюстрацией отношений между рекурсивными программами и фундаментальными структурами данных. Любая связная структура данных может быть представлена в виде графа, а некоторые известные алго­ритмы обработки деревьев и других связных структур представляют собой частные слу­чаи алгоритмов на графах. Назначение данной главы заключается в том, чтобы обеспечить







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.