2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Сохранение двух чисел в одном и восстановление
Сообщение26.11.2007, 18:39 
Сущность задачи

Необходимо вывести алгоритм при котором в некоторое число находящееся в строго определенных граница (к примеру от 0 до 65535) должно быть вложено другое число (для простоты задачи от 0 до 1). При этом алгоритм искажения должен быть полностью обратим, то есть исходные значения полностью восстанавливаются не менее чем при одном цикле. Более не обязательно. Такой алгоритм необходим для указания того, что в некторой системе произошел тот или иной процесс.

Обязательные требования
- значение числа не может выходить за строго определенные условиями границы;
- значения обоих чисел должны восстанавливаться точно не менее одного раза.

 
 
 
 
Сообщение26.11.2007, 18:41 
Аватара пользователя
в Computer Science

 
 
 
 
Сообщение27.11.2007, 12:10 
Аватара пользователя
Уточните, пожалуйста, сколько именно чисел (одно или два) хочется упаковать в число от 0 до $2^{16}-1$ и сколько возможных значений может принимать каждое из них.

 
 
 
 
Сообщение27.11.2007, 14:52 
Всего два числа. Каждое из которых находится в произвольном диапазоне! Для примера первое от 0 до 65535, а второе - от 0 до 1. Соответственно, исходя из условий искаженное число должно находиться большем диапазоне, т.е от 0 до 65535. Второе условие - это точное восстановление исходных чисел из искаженного. У меня получается выполнить только одно из двух условий, но не более!!!

P.S. Благодарю за проявленный интерес и понимание, а также очень благодарен за помощь всем, кто ее сможет оказать!!! Если эта задача будет решена, то я в долгу не останусь!!!

 
 
 
 
Сообщение28.11.2007, 11:11 
Аватара пользователя
Все равно не до конца понял, сколько значений может принимать каждое из чисел. "От 0 до 1" - это сколько значений?

Напомню простую вещь (извиняюсь, если это и так хорошо известно). Если одно число может принимать $n$ возможных значений, а второе - $m$ значений, то количество различных пар чисел равно $nm$. Следовательно, то число, в которое Вы хотите эту пару упаковать, обязано принимать не менее $nm$ значений. В противном случае (по принципу Дирихле) однозначное восстановление невозможно.

 
 
 
 
Сообщение28.11.2007, 13:38 
На самом деле любое!

 
 
 
 
Сообщение28.11.2007, 14:06 
Аватара пользователя
Это невозможно. "Любых" значений бесконечно много, их нельзя закодировать целым числом, лежащим в фиксированных границах (т.е. принимающим лишь конечное число значений).

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

 
 
 
 
Сообщение28.11.2007, 16:24 
К сожалению я не могу раскрыть здесь Вам возможный алгоритм кодирования двух и более чисел с условием того, что результат искажения принимает конечное число значений!!! Это один из моих алгоритмов шифрования! Это действительно возможно! Возможно есть другой путь, в частности если два или более конечных числа поставить в зависимость друг от друга. В частности, получение неизвестного числа из искаженного так, чтобы получилось известное число (с возможными отклонениями в меньшую либо в большую сторону).

Также я использовал алгоритм шифрования с тем, чтобы привести число превышающее диапазон значений в необходимый! Также работает! Но в этом случае восстановить число достоверно невозможно, даже при том, что есть флаг указывающий на произведенное ранее искажение!!!

 
 
 
 Re: Сохранение двух чисел в одном и восстановление
Сообщение03.12.2007, 02:49 
pereshein писал(а):
Сущность задачи
Необходимо вывести алгоритм при котором в некоторое число находящееся в строго определенных граница (к примеру от 0 до 65535) должно быть вложено другое число (для простоты задачи от 0 до 1).


Действительно, сущность задачи не понятна. С одной стороны, первое число, наверное, короткое целое без знака (Word, short unsigned), кодируемое двумя байтами. С другой стороны, второе число, скорее всего, с плавающей точкой float (4 байта) или double (8 байт) или с фиксированной точкой (любое число байт, но фиксированное число десятичных разрядов) или целое без знака, которое уже в программе делится на некоторый делитель для получения числа с плавающей точкой. В любом случае, число с плавающей точкой по своей природе является приближенной величиной и не может быть восстановлено абсолютно точно, а только с некоторой минимальной погрешностью. Именно поэтому для проверки на равенство двух чисел с плавающей точкой рекомендуют использовать не (=), а диапазон >= <=

Какой способ кодирования Вы имеете ввиду?
Какие значения(тип, конкретные величины, разрядность шкалы) могут принимать эти числа?

 
 
 
 Re: Сохранение двух чисел в одном и восстановление
Сообщение05.12.2007, 04:08 
CyberCraft писал(а):
Действительно, сущность задачи не понятна.
Еще бы!
В интернете как-то рекламировался супер-компрессор файлов, который ЛЮБОЙ файл сжимал до 1024 байт.
Идея просто носится в воздухе :)

 
 
 
 
Сообщение05.12.2007, 13:08 
Искомый алгоритм не является каким-либо компрессором, а способом сохранения состояния возникающего процесса!!!

 
 
 
 
Сообщение06.12.2007, 07:54 
Аватара пользователя
pereshein писал(а):
а способом сохранения состояния возникающего процесса!!!

Это имеет значение?

 
 
 
 
Сообщение08.12.2007, 09:45 
Очень большое!

 
 
 
 
Сообщение08.12.2007, 20:04 
Аватара пользователя
:evil:
нг писал(а):
Это имеет значение?

pereshein писал(а):
Очень большое!

Похоже, Вы не туда пришли. Не на тот форум. :lol:

Здесь все считают, что значения не имеет.

Это математики: при подсчёте им всё едино: что блины, что коровьи блины. 1, 2, 3, …

 
 
 [ Сообщений: 14 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group