|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.03.2019, 07:57 | #1 |
Пользователь
Регистрация: 20.05.2014
Сообщений: 29
|
Подскажите алгоритм кодирования с избыточностью
Доброго времени суток!
Буду очень благодарен за помощь. Стоит следующая задача: есть некий большой массив информации, допустим файл. Он разделен на достаточно большие фрагменты по 32КБ. Эти фрагменты могут теряться безвозвратно (не портится, а именно теряться; т.е. если информация есть, то она обязательно корректна, либо её нет). Нужен алгоритм, который будет для заданной входной совокупности корректных данных и максимально допустимого количества потерянных блоков генерировать информацию для восстановления, по которой эти потерянные блоки (заданные по порядковому номеру например) можно будет восстановить. Притом объем этой "информации для восстановления" должен быть как можно ближе к теоретическому минимуму (т.е. главное эффективность использования энергонезависимой памяти, быстродействие и расход ОЗУ роли не играет). Быстрый гуглеж рассказал мне о кодах Рида-Соломона, но после краткого прочтения статьи в Википедии появились сомнения что это именно то что мне надо. Может есть готовые специализированные алгоритмы под мою задачу, используемые в архиваторах например? С уважением! |
27.03.2019, 15:49 | #2 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Матричное кодирование. С длинной блока допустим 256х8
256 бит=32 байта распределяем по блокам, как при раздаче колоды карт, как то принято в RAID6 Избыточные коды и коды чётности триплировать и распределить ленточно по блокам. (25+256)/256=1,097 Если потерянных блоков может быть больше 1 то соотвественно увеличиваем размер матрицы 256x16 и так далее. При размере 256x256 получим полное дублирование.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 27.03.2019 в 15:59. |
27.03.2019, 21:18 | #3 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Питерский2
Короче я бы реализовал коды Хэмминга как самые простые и перетосовал бы как на картинке (или около того). Пример сортировки Тут немного подробнее с примерами в кодах Рида-Соломона, http://computersciencelabs.blogspot....-of-raid6.html
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 27.03.2019 в 21:21. |
28.03.2019, 07:01 | #4 | ||
Пользователь
Регистрация: 20.05.2014
Сообщений: 29
|
Привет Pavia!
Спасибо за развернутые ответы! Завтра я изучу все написанное тобой подробнее, потому что в пять утра уже голова не варит) Касательно кодов Хэмминга, то перетасовывать наоборот не надо, информация для восстановления типа передается по другому каналу, который считается 100% надежным, но я думаю что это уже детали реализации... Что касается кодов Рида-Соломона, то я пока отверг их потому, что применение их "влоб" в моем случае не отвечает условию: Цитата:
Цитата:
Спасибо ещё раз за информацию, завтра отпишусь. Хорошего дня! |
||
28.03.2019, 11:15 | #5 | |
Участник клуба
Регистрация: 17.05.2011
Сообщений: 1,660
|
Цитата:
Передаёте нумерованные пакеты, если конкретный пакет потерялся безвозвратно, то не проще ли его передать заново? |
|
28.03.2019, 17:28 | #6 |
Пользователь
Регистрация: 20.05.2014
Сообщений: 29
|
kvitaliy, конечно проще повторить передачу, но задание именно в алгоритме)
Последний раз редактировалось Питерский2; 28.03.2019 в 17:31. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Алгоритм оптимального кодирования Хаффмена | Maray | Помощь студентам | 1 | 07.11.2015 16:43 |
Алгоритм оптимального неравномерного кодирования | Damir1990 | Помощь студентам | 0 | 02.10.2012 15:11 |
Алгоритм группового кодирования | Archetype | Visual C++ | 0 | 24.12.2011 15:19 |
как на асме реализовать алгоритм манчестерского кодирования | Lanches | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 17.07.2007 13:50 |