Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Глава 22. Потоки в сетях. шин, а потом обращаться к ним по мере необходимости, мы вызываем функцию phiR, чтобы получить каждое значение потенциала; она проходит вверх по дереву с тем
шин, а потом обращаться к ним по мере необходимости, мы вызываем функцию phiR, чтобы получить каждое значение потенциала; она проходит вверх по дереву с тем, чтобы найти допустимый потенциал, а затем вычисляет все необходимые потенциалы на этом пути. Чтобы реализовать такой подход, мы просто заменяем доступ к массиву phi [и] на функцию, которая определяет стоимость использования вызова функции phiR(u). В худшем случае мы вычисляем все потенциалы так же, как и раньше, однако если мы исследуем только несколько подходящих ребер, то мы вычисляем только те потенциалы, которые необходимы для выявления этих ребер. Подобные изменения никак не отражаются на производительности алгоритма в худшем случае, но они несомненно повышают его быстродействие в практических приложениях. Несколько других соображений по повышению производительности сетевого симплексного алгоритма исследуются в упражнениях (см. упражнения 22.126-22.130), и они представляют только незначительную часть того, что было предложено. Как мы неоднократно подчеркивали на протяжении всей этой книги, задача анализа и сравнения алгоритмов на графа сложна сама по себе. С появлением сетевого симплексного алгоритма эта задача еще больше усложняется за счет различных подходов к реализации и широкому разнообразию приложений, с которыми нам приходится сталкиваться (см. раздел 22.5). Какая из реализаций наилучшая? Имеем ли мы право сравнивать реализации, в основу которых положены доказуемые границы для худших случаев? Насколько точно мы можем выразить в конкретных числах различие в производительности различных реализаций применительно к конкретным приложениям? Должны ли мы использовать различные реализации, приспособленные под конкретное приложение? Мы рекомендуем читателям набраться большего опыта решения вычислительных задач с использованием различных реализаций сетевого симплексного алгоритма и найти ответ на некоторые из предложенных вопросов, проведя эмпирические исследования, подобные тем, которые мы неоднократно и настоятельно рекомендовали на протяжении всей книги. В стремлении отыскать решение задач о потоке минимальной стоимости, мы сталкиваемся со знакомыми труднорешаемыми проблемами, тем не менее, опыт, который мы приобрели при решении задач с возрастающей трудностью на протяжении этой книги, формирует у вас солидный фундамент для разработки эффективных реализаций, которые способны эффективно решать широкие классы важных практических задач. Некоторые из этих исследований описаны в упражнениях в конце этого и следующего разделов, однако, эти упражнения следует рассматривать только в качестве отправной точки. Каждый читатель может провести новые эмпирические исследования, которые способны пролить свет на те или иные реализации и приложения, представляющие интерес в научном плане. Возможность кардинально повысить производительность приложений, которые остро в этом нуждаются, за счет правильного развертывания классических структур данных и алгоритмов (либо разработки новых) для базовых задач, делает изучение реализаций сетевого симплексного алгоритма благодатной областью исследований, к тому же существует обширная литература по реализациям этого алгоритма. В прошлом прогресс в этой области имел решающее значение, ибо он помог уменьшить огромные затраты на решение сетевых симплексных задач. Исследователи предпочитают полагаться на тщательно подобранные библиотеки в своем стремлении решить эти задачи, что, собственно, и сегодня оправдывает себя во многих случаях. Тем не менее, таким библиотекам все труд- Часть 5. Алгоритмы на графах нее шагать в ногу с современными исследованиями и приспосабливаться к новым задачам, которые возникают в новых приложениях. Быстродействие и компактные размеры современных компьютеров, доступные реализации, подобные программам 22.12 и 22.13, могут послужить отправными точками для разработки эффективных инструментальных средств решения задач для многих приложений.
|