Комбинаторные алгоритмы предназначены для выполнения вычис-
лений на различного рода объектах, возникающих в прикладных ком-
бинаторных задачах и при исследовании дискретных математических
структур. Необходимость разработки эффективных, быстрых комби-
наторных алгоритмов уже давно не вызывает сомнений. На практике
нужны не алгоритмы, а хорошие алгоритмы в широком смыс-
ле. Одним из основных критериев качества алгоритма является время,
необходимое для его выполнения.
Разработке и анализу вычислительной сложности комбинаторных
алгоритмов над классическими комбинаторными объектами посвящено
настоящее учебное пособие. Наряду с теоретическими знаниями даётся
описание таких важнейших алгоритмов, приводится их строгое обосно-
вание и детально изучается асимптотическая сложность рассматривае-
мых алгоритмов. Мы познакомим читателя с широким кругом понятий
и сведений из дискретной математики, необходимых практикующему
программисту. Пополним запас примеров нетривиальных алгоритмов
над объектами дискретной математики существенно обо-
гатить навыки самостоятельного конструирования алгоритмов и сфор-
мировать мышление, позволяющее использовать методы дискретного
анализа при разработке эффективных алгоритмов для решения прак-
тических задач и оценке их сложности.
Для понимания материала учебного пособия требуется знание ос-
новных понятий и фактов из дискретной математики и математической
логики. Читатель должен обладать минимальным опытом программи-
рования, каждый изучаемый алгоритм снабжен понятным псевдокодом,
позволяющим реализовать рассматриваемый алгоритм на доступном
языке программирования. При изучении отдельных тем используются
основы математического анализа и теории вероятностей.
ответ все этапы технологии решения задачи на компьютере на примере конкретной задачи.
1. Постановка задачи. Дано N кубиков, на которых написаны разные буквы. Сколько различных N -буквенных слов можно составить из этих кубиков (слова не обязательно должны иметь смысл)?
Искомую целочисленную величину обозначим буквой F. Тогда постановка задачи выглядит так:
Дано: N.
Найти: F.
2. Математическая формализация. Получим расчетную формулу. Сначала рассмотрим несколько конкретных примеров. Имеются два кубика с буквами «И» и «К». Ясно, что из них можно составить два слова:
ИК КИ.
Добавим к ним третью букву, «С». Теперь число разных слов будет в три раза больше предыдущего, т. е. равно 6:
ИКС КИС ИСК КСИ СКИ СИК.
Если добавить четвертую букву, например «А», то число слов возрастет в четыре раза и станет равным 24:
Объяснение:
Следует заметить, что и Эйкен, и Уотсон, обладая немалым упрямством, любили делать все по-своему. Сначала они разошлись во мнениях относительно внешнего вида машины.Марк-1, достигавший в длину почти 17 м и в соту более 2,5 м, содержал около 750 тыс. деталей, соединенных проводами общей протяженностью около 800 км. Для инженера такая махина была поистине кошмарным сном. Эйкен хотел оставить внутренности машины открытыми, чтобы специалисты имели возможность видеть ее устройство. Уотсон же, которого, как всегда, больше беспокоила репутация фирмы IBM, настаивал, чтобы машину заключили в корпус из стекла и блестящей нержавеющей стали.
Уотсон вышел победителем в спорах по этому и другим вопросам, но, когда Марк-1 был «представлен» прессе в августе 1944 г., Эйкен взял реванш. Он вскользь упомянул о роли, которую сыграла в этом проекте корпорация IBM, а лично о Томасе Уотсоне вообще не сказал ни слова. Уотсон был в бешенстве. «Вы не смеете так пренебрежительно относиться к IBM! - кричал он Эйкену. - Для меня IBM значит не меньше, чем для вас, выпускников Гарварда, ваш университет!» Сын и преемник Уотсона Том Уотсон-младший говорил позже: «Имей Эйкен и отец под рукой пистолеты, они бы убили друг друга».