
- •Министерство образования и науки республики казахстан
- •Есик, 2012 Содержание
- •Абстракт
- •Abstract
- •Введение
- •§ 1. Как можно построить комбинационное число по порядковому номеру перестановки?
- •§ 1. Как можно построить комбинационное число по порядковому номеру перестановки?
- •§ 2. Как по комбинационному числу найти перестановку?
- •§ 3. Как по заданной перестановке определить комбинационное число?
- •Актуальность
- •Есть 6 полок
- •Есть 6 книг
- •Прикладное применение
- •Заключение
- •Литература
Актуальность
Приведенный нами алгоритм может использоваться в различных компьютерных программах для ускорения поиска. Для нахождения перестановки по заданному номеру,
или же номера заданной перестановки в лексикографическом упорядочении требует перечисления всех перестановок с предыдущими номерами, что требует в среднем времени порядка n!/2
Наш алгоритм использует время порядка n. Например: Если n= 1000, то обычный метод требует времени порядка 1000!
Этот алгоритм может быть использован в различных компьютерных программах использующих поиск перестановок или их порядка, что часто встречается в различных программах. Например: игры, шахматы и т.д.
Например:
Есть 6 полок
S1 S2 S3 S4 S5 S6
Есть 6 книг
B1 B2 B3 B4 B5 B6
Есть ограничение: B1 не может войти в S1 или S2.
Что было бы первой рабочей комбинацией?
Если вы дадите эту задачу компьютеру, он использует "грубую силу"(Brute force), чтобы решить это. (что означает, подставлять каждую комбинацию одну за другой).
Это заняло бы много времени. И выглядело бы так:
B1 B2 B3 B4 B5 B6
B1 B2 B3 B4 B6 B5
………
И, так продолжалось бы дальше.
Но, при использовании рассмотренного метода данной работы, компьютер может найти первую комбинацию очень легко и быстро.
Так как мы знаем, что B1 не будет изменяться 120 шагов, можно заставить компьютер пропускать все их. Тогда это выглядело бы так:
B2 B1 B3 B4 B5 B6
Если бы компьютер искал, используя грубую силу, он рассматривал бы все комбинации до того, как он получил бы правильный ответ. С новым методом можно вынудить компьютер пропускать 24 шага, и он найдет ответ: 144. (который имеет комбинационное число 1-1-0-0-0-0 и перестановку B2-B3-B1-B4-B5-B6).
При использовании этого метода, можно было бы сэкономить много времени на компьютерные проблемы как эта.
Прикладное применение
Из предидущих глав мы получили алгоритм вычиляющий порядок перестановок. В этой главе мы покажем поверхностное применение этого алгоритма для поиска информации различного рода. Попытаемся создать систему поиска используя перестановку как слово,а порядковый номер как индекс.
Итак, мы можем определить на каком порядке находится перестановка определенных знаков (чисел, буков, символов), другими словами мы можем найти индекс перестановки. Значит если задать ключевую перестановку, тоесть слово или сочетание слов и знаков (пробел примим в виде знака), то при сортировке по алфавитному порядку можно найти его порядковый номер. А затем и само расположение этого слова, используя несколько вспомогательных программ.
Пример 1
Пусть у нас есть множество слов S={apple,burger,cotton, … , knife, ... ,York,zero}
(слова подобраны в алфавитном порядке) состоящее из 26 слов. И нам нужно найти слово cotton и knife которые имеют номера 3 и 11 в этом множестве. Это легко так как каждое слово стоит в порялке порядке.
Усложним задачу, добавим во множество по несколько слов для каждой буквы.
S={apple, animal, area, … , burger, bread, … ,zoo, zero}
Теперь слов больше и они не расположены в порядке. Чтобы найти какое-нибудь слово придется пропускать другое варианты, иначе это займет много времени.
Для этого и будем использовать наш алгоритм.
Найдем расположение слова knife .
У нас всего 27! комбинаций. (0 – пробел)
a
b c d …
z 0
a b c d … 0 z
27!
… … …
0 z y x … b a
Так как в слове knife всего 5 буков, то множество нужных нам комбинаций выглят так
k
n i f e 0
a b …
z
k n i f e 0 a b ... y
21!
... ... ...
k n i f e 0 z y … a