Алгоритм Нарайаны
Этот онлайн-калькулятор реализует алгоритм Нарайаны для генерации следующей перестановки в лексикографическом порядке
Этот материал распространяется на условиях лицензии Creative Commons Attribution/Share-Alike License 3.0 (Unported). Это означает, что вы можете размещать этот контент на своем сайте или создавать на его основе собственный (в том числе и в коммерческих целях), при условии сохранения оригинального лицензионного соглашения. Кроме того, Вы должны отметить автора этой работы, путем размещения HTML ссылки на оригинал работы https://planetcalc.ru/8520/. Пожалуйста оставьте без изменения все ссылки на других авторов данной работы или работы, на основе которой создана данная работа (если таковые имеются в спроводительном тексте).
Этот онлайн калькулятор иллюстрирует работу нерекурсивного алгоритма Нарайаны для генерации перестановок в лексикографическом порядке. Вы вводите элементы начальной перестановки, разделенные запятыми, и количество итераций алгоритма (перестановка, полученная на предыдущей итерации, является начальной перестановкой следующей итерации). Данные по умолчанию - перестановка 1,2,3 и количество итераций 6 генерируют все возможные перестановки из трех элементов (три факториал) и возвращают к начальной перестановке.
Это иллюстрирует тот факт, что если алгоритм Нарайаны применить в цикле к исходной последовательности из элементов , упорядоченных так, что , то он сгенерирует все перестановки элементов множества в лексикографическом порядке1.
Описание алгоритма можно прочитать под калькулятором.
Алгоритм Нарайаны
- Найти такой наибольший , для которого .
- Увеличить . Для этого надо найти наибольшее , для которого . Затем поменять местами и .
- Записать последовательность в обратном порядке.
Алгоритм придуман индийским математиком Пандитом Нарайаной в XIV веке.
Комментарии