М.: Мир, 1988. — 200 с.
В настоящей книге представлены некоторые разделы комбинаторики,
причем особое внимание уделено конструктивному алгоритмическому
подходу - рядом с обсуждаемыми комбинаторными проблемами, как
правило, приводятся алгоритмы их решения вместе с анализом их
вычислительной сложности. Эти алгоритмы представляют собой сжатые
варианты программ, написанных на языке Паскаль. Первая, самая
большая глава данной книги содержит изложение наиболее классических
разделов комбинаторики (перестановки, разбиение множеств и чисел,
биномиальные коэффициенты, производящие функции, и т.д.), а также
многие - необязательно классические - алгоритмы генерирования
упомянутых комбинаторных объектов. Во второй главе представлены
основные методы, используемые при конструировании алгоритмов на
графах, в особенности методы систематического обхода графов.
Тематика, связанная с графами, затрагивается и в двух следующих
главах: в одной из них обсуждаются метода нахождения кратчайших
путей в графах, ребрам которых приписаны произвольные "длины", в
другой - основное внимание сконцентрировано на задаче отыскания
максимального потока в сети (т.е. в графе с определенными
"пропускными способностями" ребер). В последней главе
рассматривается применение комбинаторного понятия матроида для
решения некоторого класса оптимизационных задач.