Сделать раскраску графиков менее строгой
Я экспериментирую с алгоритмом раскраски графа. Это способ раскрасить узлы графа так, чтобы никакие 2 соседних узла не имели одинаковый цвет.
Предположим, у меня есть следующие данные, которые я хочу "раскрасить" (назначить группам), где каждое слово является узлом:
- черный кот
- серый кот
- собака серый
- собака черная
Я ожидал бы следующие группы:
- Котопес
- черный, серый
Но что, если я добавлю имя моего 4-го животного, которое grey
(так же, как цвет)?
Итак, 4-я строка становится:
- собака черный серый
Алгоритм раскраски не может различить цвета и названия, поэтому black
а также grey
окажется в разных группах.
Как я могу настроить алгоритм так, чтобы он стал "менее строгим"?
Как: Только если 2 узла появляются более чем на 90% вместе, считайте их смежными и поместите их в одну группу.
Примечание: приведенный мной пример упрощен. Я не могу просто сгруппировать свои слова по name
или же color
Мне нужен более общий подход.
1 ответ
(Надеюсь, что ваш вопрос правильно - ваш пример не очень помогает)
Поэтому в настоящее время вы создаете следующий цветной график из ваших входных данных:
cat--black
| / |
| / |
grey--dog
Теперь вы можете назначить целочисленную метку каждому ребру, считая, как часто соответствующая пара появляется вместе в элементе списка. Затем вы определяете некоторый нижний порог и удаляете все ребра, помеченные меньшим числом. Если вы теперь раскрасите получившийся график, этим "редким" парам снова будет разрешен общий цвет.