Вопрос

Пусть $ e $ - отношение эквивалентности, определенные над заданным $ S $ . Доступ к $ E $ только через запросы формы $ m (s_1, s_2)= 1 $ Если $ s_1 $ и $ s_2 $ находятся в одном классе и $ 0 $ в противном случае. Вычисление $ m $ стоит дорого (скажем, $ o (n ^ 2) $ ). >

Я ищу эффективную структуру данных $ D $ , который поддерживает запросы формы «Учитывая $ S $ < / span>, делает $ d $ содержит элемент $ S '$ в том же классе эквивалентности, что и < Spant Class="Математический контейнер"> $ s $ "?
Наивный подход - это поиск элемента по элементу в $ d $ и тестируйте, но есть ли другое решение?

Это было полезно?

Решение

Лучшее, что вы можете сделать, это отслеживать все знаменитые в настоящее время эквивалентности с использованием структуры данных поиска профсоюза.Первоначально каждый элемент находится в собственной группе.Всякий раз, когда вы обнаружите, что два элемента эквивалентны, вы объединяете свои группы (через операцию Union).

Тогда, лучшее, что вы можете сделать, чтобы ответить на список вы, чтобы перечислить все группы (кроме одного, содержащего $ S $ ), найдитеПредставитель $ X $ Для каждой такой группы и проверьте, будет ли $ s $ эквивалентно $ x $ .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top