Я работаю над кодом генерации сообщений , и я хотел бы генерировать как можно меньше boundaries для любого заданного ввода даже неизвестной длины в потоковом режиме.Создайте кратчайшую НЕ подстроку для заданной строки
Сейчас я получаю достаточно хорошее решение, основанное на случайном генераторе. В основном я генерирую случайную строку из 32 символов Base64 и пытаюсь найти в ней самую короткую подстроку, которая не является подстрокой тела сообщения MIME.
Это не идеальное решение, потому что:
Граница не всегда кратчайшим. Для очень упрощенного примера: для текста только альфа граница может быть всего лишь одной цифрой, но сгенерированный граничный материал может содержать только альфы.
Мне нужен случайный генератор и уникальное семя для него каждый раз, когда я запускаю приложение. Идеально лучше иметь детерминированный алгоритм.
Так вот что я хочу знать. Можно ли сохранить свойство алгоритма потоковой передачи, работать с фиксированным объемом памяти, быть детерминированным и генерировать идеальную кратчайшую границу? Или мы можем достичь только некоторых свойств путем компромиссов?
Я думаю, что [суффикс-автомат] (https://en.wikipedia.org/wiki/Suffix_automaton) будет вам полезен – throwit
Зачем вам нужна длина граничной строки? Разумно длинная уникальная строка также с большей вероятностью будет корректно работать с другими инструментами, которые меньше заботятся о том, чтобы иметь уникальную граничную строку. – tripleee
Спасибо @tripleee, это действительно интересный момент. –