spamsink: (Default)
[personal profile] spamsink
Если есть двоичный носитель информации, биты которого можно изменять только в одну сторону (например, из 0 в 1), то можно ли придумать код, позволяющий писать на этом носителе произвольные данные не однажды, а большее количество раз, чтобы суммарный объем этих данных превосходил объем носителя?



Для алфавита из четырех символов - A, B, C, D - выберем следующие трехбитные коды для первой записи:
000 - A
001 - B
010 - C
100 - D

Если в той позиции, куда мы хотим записать что-то повторно, был символ A, то нет проблем.
Если же мы хотим сделать B из C или D, то логично будет назначить для "вторичного B" код 110. Аналогично с "вторичными" C и D. Тогда для вторичного A остается код 111, итого

000 - A
001 - B
010 - C
011 - D
100 - D
101 - C
110 - B
111 - A

Таким образом мы тратим 3 бита, позволяя записывать 2 бита дважды - уже экономия.

Патент 1982 года показывает, что можно повторно записать 26 символов в 7 битах. До сих пор неизвестно, существует ли 7-битный код для 27 символов.

Date: 2015-04-05 06:47 am (UTC)
From: [identity profile] maksa.livejournal.com
Непонятно. Что если надо записать B на место B?

Date: 2015-04-05 08:03 am (UTC)
From: [identity profile] maksa.livejournal.com
Точно. Просто с телефона читал, всё сразу не уместилось на экране и в голове.

Date: 2015-04-05 04:41 pm (UTC)
From: [identity profile] oldjackaroo.livejournal.com
А я всегда недоумевал, как на RO диске меняют оглавление, когда туда что-то дописываешь...

Date: 2015-04-05 05:04 pm (UTC)
From: [identity profile] oldjackaroo.livejournal.com
Я примерно так и представлял, но RO диск можно рассматривать состоящим из тритов - битов с 3 состояниями, 0, 1, не-записан, где не-записан можно изменить на 0 или 1, а 0 или 1 - уже ни на что. Соответственно, можно использовать некоторую троичную модификацию палимпсестного кода.

Date: 2015-04-05 05:12 pm (UTC)
From: [identity profile] oldjackaroo.livejournal.com
А я думал, они умеют распознавать незаписанную поверхность.

А как тогда они находят конец записанного участка? Сканируют всю поверхность? (Ну, или часть, предназначенную для оглавления? Или двоичный поиск?)

Но тогда тем более, твой код в чистом виде. Или там технически невозможно один бит выжечь, а не целый блок?

Date: 2015-04-05 06:14 pm (UTC)
From: [identity profile] oldjackaroo.livejournal.com
Спасибо. Познавательно.
Page generated Mar. 6th, 2026 01:23 am
Powered by Dreamwidth Studios