![]() |
|
|
![]()
|
|
| Royan |
|
||||||||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Я попытался сформулировать вопрос как можно короче, но у меня не получилось, поэтому я ключевые моменты я выделил жирным курсивом.
Положим, у меня есть некоторый набор значений характеристик чего бы то ни было, но для простоты возьмем, например, автомобильное колесо (пример надуманный поэтому не ищите в нем смысла), тогда для него могут быть перечислены следующие значения характеристик:
Условимся также что когда я кодирую какое-то автомобильное колесо с помощью этих характеристик, то я всегда придерживаюсь следующей последовательности <марка><диаметр><тип> Понятно, что список можно составить хоть из тысячи значений, задача формулируется следующим образом: Каждой характеристике нужно сопоставить бинарный код, причем такой, чтобы когда из этих характеристик будет составлены конкретные модели колес, то у каждого из них не было ни одного совпадения с другими. Знаю, что непонятно, поэтому приведу пример. Пусть я кодирую признаки следующим образом
Рассмотрим две комбинации покрышек Pirelli 16" Зимняя в бинарном виде будет кодироваться (читаем, справа налево) так 101001 и Goodyear 15" Зимняя -- 100110 Теперь, основная фишка, предположим, что цены на эти колеса одинаковые - $500, поэтому когда я буду сохранять информацию о ценах на колеса я хочу поместить их одной строкой, т.е. написать не Таблица цен на колеса
А так Таблица цен на колеса
Как нетрудно заметить 101111 это результат бинарного сложения 101001 OR 100110 Наконец возникающая проблема, которая возвращает к моему оригинальному вопросу. Для значения 101111 подпадает также комбинация Pirelli 15" Зимняя и Goodyear 16" Зимняя, а на них цены могут быть совсем разные. Как кодировать свойства покрышек так, чтобы избежать этой проблемы? Это сообщение отредактировал(а) Royan - 15.12.2008, 18:36 -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
||||||||
|
|||||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
А никак.
И главное - это самое "я хочу поместить их одной строкой" ЛИШЕНО СМЫСЛА. Давай-ка лучше реальную проблему, а не какую-то там [censored] модель. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Akina, Эта модель под собой имеет идентичную задачу. Все что я изменил это предметную область (у меня не в колесах дело). Представь, что у меня есть сотни тысяч записей в таблице в БД, 80% из них дублируют друг друга. Каждая запись в таблице сопоставлена какому-то источнику признаки которого и являются этими (в кавычках) Pirelli, 15", Зимняя и т.д. а значения и есть "цены" я хочу объединить эти записи используя вышеизложенный способ, но в силу описанной проблемы это невозможно
Это сообщение отредактировал(а) Royan - 15.12.2008, 18:52 -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
О господи, ЗАЧЕМ? тебе что, заняться больше нечем? Пойми, ты хочешь такого кодирование, которое закодирует уникальным образом любое возможное сочетание допустимых сочетаний элементов так, чтобы можно было сказать, есть в нём какое-то конкретное сочетание или нет. Применительно к твоему примеру - всего возможно 27 сочетаний (по 3 варианта вендора, размера и типа). Следовательно, к каждой из цен ты должен присовокупить 27-битовую маску допустимых сочетаний. Само собой при увеличении количества как характеристик, так и вариантов каждой характеристики количество допустимых сочетаний растёт, и весьма быстро. Так что размер маски у тебя быстро превысит все допустимые пределы. А с учётом всё-таки достаточно высокой хаотичности данных эту маску даже эффективно заархивировать не получится, да плюс эффективность по времени - придётся таскать её как есть... Так что из-за того, что у тебя в таблице сотня тысяч характеристик пары десятков типов и всего сотня цен - это не повод с каждой из цен волочь битовыю маску размером в кило-мега-гига-(допишите сами)-байты... Даже если 99% теоретически возможных сочетаний невозможны практически, и найдётся эффективный алгоритм их отсева как при кодировании, так и при расчёте номера маски, всё равно размер маски останется запредельным. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Akina, Ну тут еще такой момент, что я точно знаю количество характеристик и их никогда не будет больше 15 (при том что сейчас их в два раз меньше) поэтому вариант с нехваткой битов это не мой случай. Я всего лишь хотел узнать имеет ли изложенная мною задача решение, нет значит нет, но если да, я бы хотел узнать как к ней подступиться...
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Это значит, что количество групп не превышает 15... всего лишь... но для 15 групп по 10 вариантов каждой характеристики это по петабиту на каждую из цен -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Окей понял, вопрос снимается. -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |