реклама на сайте
подробности

 
 
> Закодировать таблицу комбинаций размещений с повторениями
Grizzzly
сообщение Feb 20 2015, 07:33
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Есть таблица из 45*45 = 2025 комбинаций размещений с повторениями. Нужно передавать информацию, соответствующую определенной комбинации. Для этого нужно 11 бит (передается индекс массива). Восстановить комбинацию на приемной стороне запросто - по принятому индексу таблицы. А как лучше разместить комбинации в таблице, чтобы процесс кодирования происходил тоже "влет"? Не перебором по таблице же? Можно, конечно, судить область поиска, согласно "весу" (например, для (3,5) "вес" равен 8), и искать индекс среди пар с таким же "весом", но это тоже не оптимально. Может, есть какие-то известные решения?

Сообщение отредактировал Grizzzly - Feb 20 2015, 10:03
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
spbroma
сообщение Feb 20 2015, 08:38
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 23-07-14
Пользователь №: 82 337



Если добавить 1 бит, можно будет левыми 6 бит кодировать строку, а правыми - столбец.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Feb 20 2015, 08:39
Сообщение #3


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Если Вы будете хранить элементы массива на передающей стороне в сортированном виде, то для поиска необходимо будет только log2(N) операций, для Вашего случая - 11. Это оптимальный способ. Ключевое слово для гугля - "бинарный поиск".


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Feb 20 2015, 09:35
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Цитата(spbroma @ Feb 20 2015, 11:38) *
Если добавить 1 бит, можно будет левыми 6 бит кодировать строку, а правыми - столбец.

Спасибо. Но как раз вопрос возник из-за накладываемого ограничения на число передаваемых бит.


Цитата(Rst7 @ Feb 20 2015, 11:39) *

Спасибо. Ясно, значит, всё-таки без поиска не обойтись. Я надеялся, что существует какой-то хитрый метод, использующий манипуляции с битами, позволяющий эффективно закодировать.

UPD:
Расписал на бумажке комбинации. Понял, что можно обойтись без поиска и вообще без таблицы на передающей стороне. Для пары (i,j) индекс будет вычисляться как 45*(i-1)+j. Его и передавать. А на приемной стороне уже из таблицы прямо по индексу брать эту пару.

Сообщение отредактировал Grizzzly - Feb 20 2015, 10:07
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Mar 13 2015, 15:09
Сообщение #5


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(spbroma @ Feb 20 2015, 03:38) *
Если добавить 1 бит, можно будет левыми 6 бит кодировать строку, а правыми - столбец.

+1. Это как бы само собой очевидно, смысл экономить один бит...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 16:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01388 секунд с 7
ELECTRONIX ©2004-2016