377 похожих чатов

Добрый вечер! Ищу генератор перестановок из N элементов, который бы,

во-1, за N! генераций выдал бы N! уникальный перестановок и при этом, во-2, любые соседние перестановки были бы максимально непохожими друг на друга. Алгоритм Нарайяны соответствует первому критерию, но не соответствует второму. Алгоритм получения новой перестановки шифра RC4 (уже в режиме генерирования нового байта гаммы, а не создания начальной перестановки по ключу) соответствует второму критерию, но не соответствует первому. Я слегка изменил RC4, чтобы он выдавал больше уникальных перестановок, но 100%-ого результата всё равно не достиг. Кто-нибудь из здесь присутствующих знает что-то, что могло бы соответствовать сразу обоим предъявленным критериям? Спасибо.

18 ответов

27 просмотров

Можно запустить два алгоритма Нарайяны навстречу друг другу, на i-ой генерации брать вывод первого или второго, в зависимости от четности i

Fido-Retano Автор вопроса

То есть, один начинает с "1234", а второй с "4321"?

Да, но я не уверен, что они всегда будут получаться "максимально непохожими"

Fido-Retano Автор вопроса

если каждая копия алгоритма Нарайяны пройдёт только половину своего пути и их выводы чередовать в один общий поток, то любые две соседние перестановки скорее всего таки будут сильно непохожими. Однако я теперь понял, что нужно вводить третий критерий: непредугадываемость следующей перестановки до момента её фактического появления. То есть, нужно ещё что-то по типу псевдослучайности их появления. Ваше предложение соответствует предъявленным двум критериям, но от него придётся всё же отказаться.

Тогда вам нужен какой-то алгоритм перемешивания, например, алгоритм Фишера-Йетса

Fido-Retano Автор вопроса

Не слышал о таком. Сейчас буду читать.

а какая конечная цель? почему соседние перестановки должны быть непохожими может можно чёто придумать отталкиваясь от задачи

Fido-Retano Автор вопроса

Увы, но именно этот алгоритм не подходит, так как уникальность получаемых перестановок зависит только от псевдослучайности числовых последовательностей и никак не зависит от предыдущей перестановки. Нужно что-то самодостаточное, как RC4.

Fido-Retano Автор вопроса

Вот представьте себе алгоритм Диффи-Хелмана, который при правильно подобранных параметрах сгенерит все числа, не превышающие простой модуль, ни разу их не повторив. Вот нужно тоже самое, но генерящее перестановки.

Fido-Retano Автор вопроса

Сейчас напишу.

Вы про формулу g^x (mod p), которая сгенерит все числа от 1 до p?

Я не очень понимаю, что это значит. Как без псевдослучайности выполнить этот критерий: "непредугадываемость следующей перестановки до момента её фактического появления"? Если мы знаем перестановку и алгоритм, при этом алгоритм детерминированный, мы можем посчитать следующую

Fido-Retano Автор вопроса

Да.

Fido-Retano Автор вопроса

Да, можем посчитать, как, например, значение хеш-функции. Но не должно быть возможности сказать, хотя бы в какой части диапазона N! она будет до её подсчёта.

Fido-Retano Автор вопроса

Эээээ... Не знаю. Может быть. :-))) Бент-функции я как-то раз пытался осилить, но так и не осилил.

ну типа, достаточно же сделать маппинг номер→перестановка

А нельзя ли взять (kx + b) mod n! и алгоритм получения перестановки по номеру?

Fido-Retano Автор вопроса

Вы имеете в виду получение перестановки по номеру в лексико-графическом порядке? (http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80%D0%B0_%D0%BE%D0%B1_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%83_%D0%B8_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0_%D0%BF%D0%BE_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80%D1%83)

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
всем доброго времени суток! имею вопрос: как понять ТОЧНО, что на нексус производится атака или он перегружен? исходные данные: - Nexus OSS 3.67.1-01 на OrientDB - Total co...
Michael Kostelcev
11
GM, Oceaners! 🌊 Phase 1 of the ASI token merger begins today at 15:00 UTC! We've been prepping you for this 💪 Remember: 1. DO NOT RUSH! Plenty of time for this merge; Phase ...
Danil | Never DM first Kovtoniuk
8
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
or any website to buy prepaid card with xmr that's not trocador that's down?
Umbrella Party Partner
18
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
@MissRose_bot why don't we have a little Joe Biden debate on lovely inu? It's a dare challenge. 😂
Zakaria Khan
8
Xem delist ho rha hai agr naa bhechu toh kya hoga after 1 july?
ABHI
27
Привет, имею проблему с better-sqlite3 модулем. После npm install я делаю ребилд модуля под свою текущую версию ноды с помощью npx electron-rebuild -f -m node_modules/better-s...
Anton Samofal
2
Карта сайта