Сейчас вы, возможно, думаете, что поиск решения в данном случае не представляет особого труда — надо лишь методично искать с самого начала и до конца. В этом крайне простом случае с потерянными ключами это не такой уж и плохой метод. Но в процессе поиска решения большинства задач складывается совсем другая ситуация. Обычно компьютер используется для решения задач, в которых количество вершин в области поиска очень большое, а по мере роста области поиска растет и число возможных путей к цели. Проблема состоит в том, что при добавлении новой вершины в области поиска появляется больше чем один новый путь. Значит, количество потенциальных цепочек, ведущих к решению (т.е. путей к цели), растет быстрее, чем количество вершин.
Например, проанализируем количество способов расположения трех объектов: А, Б и В. Вот шесть возможных перестановок:
А Б В А В Б Б В А Б А В В Б А В А Б
Вы можете легко убедиться, что это все перестановки множества из трех объектов А, Б и В. Однако чтобы подсчитать число перестановок, не обязательно выписывать их, достаточно вспомнить математику, точнее одну из первых теорем комбинаторики; в комбинаторике, как вы помните, изучаются конечные множества. В самом начале комбинаторики доказывается, что число перестановок множества из N элементов равняется N!(N факториал). Факториал числа — это произведение всех натуральных чисел, расположенных между самим этим числом и 1. Например, 3! равен 3 х 2 х 1, то есть 6. Число перестановок четырехэлементного множества равно 4!, т.е. 24. Для множества из пяти элементов это число равняется 120, а для множества из шести элементов — уже 720. Количество перестановок 1000 элементов равно:
4023872600770937735437024339230039857193748642107146325437999104\ 2993851239862902059204420848696940480047998861019719605863\ 1666872994808558901323829669944590997424504087073759918823\ 6277271887325197795059509952761208749754624970436014182780\ 9464649629105639388743788648733711918104582578364784997701\ 2476632889835955735432513185323958463075557409114262417474\ 3493475534286465766116677973966688202912073791438537195882\ 4980812686783837455973174613608537953452422158659320192809\ 0878297308431392844403281231558611036976801357304216168747\ 6096758713483120254785893207671691324484262361314125087802\ 0800026168315102734182797770478463586817016436502415369139\ 8281264810213092761244896359928705114964975419909342221566\ 8325720808213331861168115536158365469840467089756029009505\ 3761647584772842188967964624494516076535340819890138544248\ 7984959953319101723355556602139450399736280750137837615307\ 1277619268490343526252000158885351473316117021039681759215\ 1090778801939317811419454525722386554146106289218796022383\ 8971476088506276862967146674697562911234082439208160153780\ 8898939645182632436716167621791689097799119037540312746222\ 8998800519544441428201218736174599264295658174662830295557\ 0299024324153181617210465832036786906117260158783520751516\ 2842255402651704833042261439742869330616908979684825901254\ 5832716822645806652676995865268227280707578139185817888965\ 2208164348344825993266043367660176999612831860788386150279\ 4659551311565520360939881806121385586003014356945272242063\ 4463179746059468257310379008402443243846565724501440282188\ 5252470935190620929023136493273497565513958720559654228749\ 7740114133469627154228458623773875382304838656889764619273\ 8381490014076731044664025989949022222176590433990188601856\ 6526485061799702356193897017860040811889729918311021171229\ 8459016419210688843871218556461249607987229085192968193723\ 8864261483965738229112312502418664935314397013742853192664\ 9875337218940694281434118520158014123344828015051399694290\ 1534830776445690990731524332782882698646027898643211390835\ 0621709500259738986355427719674282224875758676575234422020\ 7573630569498825087968928162753848863396909959826280956121\ 4509948717012445164612603790293091208890869420285106401821\ 5439945715680594187274899809425474217358240106367740459574\ 1785160829230135358081840096996372524230560855903700624271\ 2434169090041536901059339838357779394109700277534720000000\ 0000000000000000000000000000000000000000000000000000000000\ 0000000000000000000000000000000000000000000000000000000000\ 0000000000000000000000000000000000000000000000000000000000\ 0000000000000000000000000000000000000000000000000000000000\ 0000000000
Поистине колоссально!
|
График на рис. 25.2 дает возможность получить наглядное представление о том, что исследователи искусственного интеллекта называют комбинаторным взрывом. И как только количество объектов превысит какое-то сравнительно небольшое число, рост количества комбинаторных объектов (например, путей в графе), перебираемых в процессе решения, становится поистине неудержимым; трудности могут возникнуть даже не при проверке такого огромного количества объектов, а гораздо раньше — при пересчете. Ведь каждая дополнительная вершина в области поиска увеличивает число возможных решений не на 1, а на число, значительно большее 1. Поэтому после достижения некоторого критического количества объектов, добавление еще одного объекта к исходным данным, например, новой вершины, приводит к тому, что возможных "кандидатов в решение" становится так много, что проверить их за обозримое время практически невозможно. Именно из-за того, что количество возможностей растет столь быстро, лишь в самых простых задачах можно применять такую "роскошь", как исчерпывающий поиск. Исчерпывающим называется поиск, при котором проверяются все вершины; этот вид поиска можно считать приемом "грубой силы". Хотя прием "грубой силы" теоретически применим всегда, на практике он часто требует слишком много времени или слишком много компьютерных ресурсов, или того и другого вместе. Поэтому исследователи разработали другие методы поиска.