![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 26.06.2012
Сообщений: 39
|
![]()
Здравствуйте!
Вот есть такое задание: Написать программу на Delphi, реализующую алгоритм Лемпеля-Зива. Программа должна кодировать исходный текст и определять объем памяти, занимаемый исходным и зашифрованным текстом в байтах. В качестве пояснения к алгоритму краткая теория: "если в прошедшем ранее выходном потоке уже встречалась подобная последовательность байт, причем запись о ее длине и смещении от текущей позиции короче чем сама эта последовательность, то в выходной файл записывается ссылка (смещение, длина), а не сама последовательность". Например фраза: "КОЛОКОЛ_ОКОЛО_КОЛОКОЛЬНИ" закодируется так: "КОЛО(-4,3)_(-5,4)О_(-14,7)ЬНИ". Я поняла этот алгоритм, но никак не соображу, как это можно реализовать в программе. Не знаю с чего начать. Если кто-нибудь сталкивался с методами шифрования, подскажите идею. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]()
Сталкивался, но боюсь на вашу задачку, сейчас, такой холивар накатит, аж страшно подумать...
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
![]() |
![]() |
![]() |
#3 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
В данном случае ни о каком шифровании речь, разумеется, не идёт, тут чистое кодирование. Кроме того, не понятно Цитата:
КОЛО(-4,3) - десять символов. Вы уверены, что запись о длине и смещении у Вас короче, чем сама последовательность? |
||
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]()
Олечка.
Язык. Наработки. Предполагаемое решение. Собственные расуждения. Скинуть задачку в тексте, много ума не нужно.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 26.06.2012
Сообщений: 39
|
![]()
Здравствуйте.
Сперва отвечу Сергею Близнякову. Да, я видимо что-то напутала с понятиями "кодирования" и "шифрования". Вот как я понимаю данный алгоритм. Берем фразу: КОЛОКОЛ_ОКОЛО_КОЛОКОЛЬНИ. Читаем по буквам слева направо - в слове КОЛОКОЛ есть повторяющийся слог КОЛ, и он есть точная копия первых 3-х букв данной фразы, и путь к этим буквам лежит в левую сторону (поэтому знак "-"), который составляет четыре знака. Получаем (-4,3). Читаем фразу дальше, в слове ОКОЛО опять видим повторяющуюся последовательность букв которая встречалась ранее - это слог ОКОЛ (мы его встречали в слове КОЛОКОЛ). Значит смещение составит пять знаков влево "-5", а количеств букв в слоге ОКОЛ четыре. Получаем (-5,4). Читаем фразу дальше, в слове КОЛОКОЛЬНИ опять видим повторяющуюся последовательность букв которая встречалась ранее - это слог КОЛОКОЛ (да это же первые 7 букв нашей фразы!). Значит смещение составит четырнадцать знаков влево "-14", а количеств букв в слоге КОЛОКОЛ семь. Получаем (-14,7). Тот материал для объяснения, который давал нам преподаватель я нашла тут http://naukoved.ru/content/view/842/35/ |
![]() |
![]() |
![]() |
#6 | |||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
![]() Цитата:
Цитата:
Вы зря расшифровываете. Из первого поста было всё понятно. Единственное, что у меня вызвало сомнение, так это то, что у Вас не соблюдается условие минимизации длины - текст после такой замены, как приведено в вашем примере не сжимается, а наоборот, становится длинее. Впрочем, на самом деле, конечно, смещение и длина хранятся не в виде строковых величин, что и даёт выигрыш. Но тогда возникает вопрос, как Вы собираетесь определить объём памяти, занимаемый кодированным текстом. Вот, например, "КОЛО(-4,3)_(-5,4)О_(-14,7)ЬНИ" сколько занимает? |
|||
![]() |
![]() |
![]() |
#7 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() |
![]() |
![]() |
![]() |
#9 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Ну так как я понимаю объем определять потом?
В любом случае это все теория. Я на практике реализации алгоритма еще не видел.
I'm learning to live...
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разветвляющийся алгоритм,циклический алгоритм и Многомерные массивы (Pascal) | TrapperPTZ | Помощь студентам | 1 | 26.01.2012 08:58 |
Разработайте алгоритм методом пошаговой детализации и программу, реализующую этот алгоритм. | iamhated | Помощь студентам | 1 | 15.01.2012 16:24 |
Разработайте алгоритм методом пошаговой детализации и программу, реализующую этот алгоритм | iamhated | Помощь студентам | 1 | 14.01.2012 16:22 |
Алгоритм TMDS (Алгоритм передачи данных интерфейса DVI) | Pro4RE | Помощь студентам | 2 | 24.04.2011 21:55 |
Волновой алгоритм (алгоритм Ли) | MrRockchip | Общие вопросы C/C++ | 4 | 10.05.2010 13:26 |