|
|
|
равномерное распределение объектов на основе совпадения характеристик
|
|||
|---|---|---|---|
|
#18+
Всем добрый день. Есть практическая задача. Имеется набор объектов (порядка сотни), обладающих характеристиками (до 8шт). Харатеристики имеют фиксированный набор значений. Требуется разложить объекты как можно равномернее в двухуровневое дерево по признаку совпадения характеристик. Например 100объектов равномерно раскладываются по 10шт в 10 узлов. Объекты в одном узле должны по возможности иметь наибольшее количество совпадающих значений характеристик. Но не менее одной. Пока додумался до того, что надо построить матрицу (100*100) и в ячейках посчитать количество совпадающих значений характеристик. А дальше куда двигаться? Отсортировать по похожести? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 10:15 |
|
||
|
равномерное распределение объектов на основе совпадения характеристик
|
|||
|---|---|---|---|
|
#18+
oleg_mВсем добрый день. Есть практическая задача. Имеется набор объектов (порядка сотни), обладающих характеристиками (до 8шт). Харатеристики имеют фиксированный набор значений. Требуется разложить объекты как можно равномернее в двухуровневое дерево по признаку совпадения характеристик. Например 100объектов равномерно раскладываются по 10шт в 10 узлов. Объекты в одном узле должны по возможности иметь наибольшее количество совпадающих значений характеристик. Но не менее одной. Пока додумался до того, что надо построить матрицу (100*100) и в ячейках посчитать количество совпадающих значений характеристик. А дальше куда двигаться? Отсортировать по похожести? 1) Проясните первое выделенное. Так, как написано, задачу решает раскладывание объектов по 1 шт. в 100 узлов. 2) Проясните второе выделенное. N объектов узла должны все разделять одно и то же значение хотя бы одной характеристики, или любые два объекта из N должны разделять одно и то же значение хотя бы одной характеристики? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 10:29 |
|
||
|
равномерное распределение объектов на основе совпадения характеристик
|
|||
|---|---|---|---|
|
#18+
Abstraction, 1) "самое равномерное распределение" это 10 узлов по 10 элементов в каждом, но самый идеальный случай. Исходная задача формулируется так: пользователь в два клика выбирает один элемент из сотни. Именно два клика. Поэтому максимально удобно сначала выбрать один из 10 узлов, а затем в данном узле выбрать один из 10 объектов. Понятно, что идеальная картина 10*10 на реальных данных вряд ли получится. Вполне нормальным было бы наличие от 5 до 12 узлов, и не во всех узлах будет ровно 10 объектов, пусть даже от 3 до 15. 2) прошу прощения, действительно неточно написал. Все элементы в одном узле должны иметь общее значение хотя бы в одной характеристике. Понимаю, что в общем случае может не получится небольшое количество узлов. Этот вариант я рассмотрю отдельно. В общем-то отвечая на ваши вопросы я понял, что надо начать с выбора 10 узлов. т.е. выбрать 10 максимально непохожих объектов и разложить их по 10 узлам. А далее можно перебирать оставшиеся 90 объектов и определять, в какой из 10 узлов он больше всего подходит... Но это что называется алгоритм "методом последовательных проходов и многочисленных ветвлений". Нет ли чего-то более изящного, вроде транспортной задачи ЗЛП? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 10:44 |
|
||
|
равномерное распределение объектов на основе совпадения характеристик
|
|||
|---|---|---|---|
|
#18+
Исходя из вышеописанного, мне кажется, что возможны случаи, полностью перечёркивающие подход "двух кликов". Пусть выделена группа в 10 элементов с общим значением некоторой характеристики. Пусть есть 11-й элемент. имеющий то же значение этой характеристики, но сильно отличающийся от этой группы по остальным характеристикам, и в то же время похожий по остальным характеристикам на другую группу, вследствие чего в неё и отнесённый. После первого клика по первой характеристике клиент получит группу, в которой этого элемента не будет. А если нужен именно он? Почему вместо деления на группы Вы не хотите пойти стандартным путём фильтрации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 10:53 |
|
||
|
равномерное распределение объектов на основе совпадения характеристик
|
|||
|---|---|---|---|
|
#18+
AkinaИсходя из вышеописанного, мне кажется, что возможны случаи, полностью перечёркивающие подход "двух кликов". Пусть выделена группа в 10 элементов с общим значением некоторой характеристики. Пусть есть 11-й элемент. имеющий то же значение этой характеристики, но сильно отличающийся от этой группы по остальным характеристикам, и в то же время похожий по остальным характеристикам на другую группу, вследствие чего в неё и отнесённый. После первого клика по первой характеристике клиент получит группу, в которой этого элемента не будет. А если нужен именно он? мысль понял. Отвечаю: клиент не выберет данную группу, потому что в названии группы будут выведены все совпадающие характеристики, а 11ый элемент будет с ними "сильно не похож". AkinaПочему вместо деления на группы Вы не хотите пойти стандартным путём фильтрации? поясните пожалуйста. Если вы про быстрый поиск - фильтрация предполагает другие действия, вроде нажатий клавиатуры (которой может не быть на коммуникаторе, но быть на PC), а также переключения между регистрами клавиатуры. т.к. значения характеристик содержат цифры, русские и англ. символы, спец.символы вроде слеша, звездочки и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 11:08 |
|
||
|
равномерное распределение объектов на основе совпадения характеристик
|
|||
|---|---|---|---|
|
#18+
oleg_m, 1) Предлагаю численный критерий: если есть N объектов, разбитых на G групп, n i - число элементов в i группе, то минимизируется "результат" N*G+Σ i n i 2 . (При "10 по 10" получится 2000 и это минимум, при "100 по 1" получится 10100) 2) У нас есть 8 свойств, каждое разбивает наше множество на классы эквивалентности. Каждая группа содержится в каком-то из классов эквивалентности. 3) (черновой вариант) Сопоставим каждому объекту восьмёрку чисел - численности соответствующих классов эквивалентности, плюс "вес" - максимальное из этих чисел. Пока не кончились объекты, выберем объект с минимальным "весом"; выделим в группу до 10 элементов из его класса эквивалентности (выбирая объекты с минимальными "весами" / выбирая случайные объекты / пытаясь выбрать объекты так, чтобы по окончании выбора минимальный из оставшихся "весов" был максимален, если их больше 10); пересчитаем численности классов эквивалентности и "веса" в оставшемся множестве. По окончании разбиения, для наименьшей по численности группы проверить возможность поместить её элементы в другие группы; если это возможно, проверить, уменьшит ли это "результат"; если да - уничтожить группу; повторить для следующей по численности группы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 11:20 |
|
||
|
равномерное распределение объектов на основе совпадения характеристик
|
|||
|---|---|---|---|
|
#18+
Abstraction, спасибо. Сейчас попробуем собрать воедино все идеи что возникли (мы тут тоже активно обсуждали разные подходы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 11:59 |
|
||
|
равномерное распределение объектов на основе совпадения характеристик
|
|||
|---|---|---|---|
|
#18+
oleg_mпоясните пожалуйста. Если вы про быстрый поиск Нет, не про него. У Вас 8 характеристик. Пользователь на экране видит 8 строк - по строке на характеристику. Ниже - грид с записями. В каждой строке имеется несколько радиобатонов (в скобках отмечу - красивее делать в выде залипающей кнопки). Каждый - с одним из наиболее часто встречающихся значений этой характеристики по всему массиву. И последний - остальное. Как только юзер выбирает радиобатон одним кликом мыша - список тут же отфильтровывается по выбранному значению. Выбрал второй - колиество строк в гриде стало ещё меньше... если мы имеем 8 характеристик и 100 записей с вариативностью пусть даже по 4 значения на характеристику, то выбор максимум 2 радиобатонов оставит на экране буквально 5-10 записей, включая нужную пользователю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 17:26 |
|
||
|
равномерное распределение объектов на основе совпадения характеристик
|
|||
|---|---|---|---|
|
#18+
oleg_mПока додумался до того, что надо построить матрицу (100*100) и в ячейках посчитать количество совпадающих значений характеристик. А дальше куда двигаться? Отсортировать по похожести? В науке это называется Кластерный Анализ. Начни читать отсюдова про методы. http://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7 Выбери для начала самый простой. Попробуй реализовать. Может подойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 18:40 |
|
||
|
равномерное распределение объектов на основе совпадения характеристик
|
|||
|---|---|---|---|
|
#18+
Akina, спасибо. Идею с радибаттонами оценил, рассмотрим как вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 21:33 |
|
||
|
равномерное распределение объектов на основе совпадения характеристик
|
|||
|---|---|---|---|
|
#18+
mayton, ну конечно! data mining как один из вариантов. Вертелась какая-то мысль в голове, никак не мог вспомнить, что мне эта задача напоминает. Спасибо что напомнили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 21:35 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37819103&tid=1342242]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 459ms |

| 0 / 0 |
