На сайте http://www.dharwadker.org/tevet/isomorphism/ представлен алгоритм определения изоморфности двух графов. Учитывая ряд, скажем так, «интересных» утверждений А. Дхарвадкера, я не склонен верить в это.
В моем исследовании я обнаружил, что алгоритм определенно даст правильный ответ и скажет вам, что два графика не изоморфны, хотя на самом деле это правильно. Однако не ясно, что алгоритм будет последовательно сообщать вам, являются ли два графика изоморфными, когда они на самом деле. «Доказательство» их результата оставляет желать лучшего.
Однако я не знаю контрпример. Прежде чем приступить к написанию программного обеспечения для тестирования алгоритма, я подумал, что увижу, знает ли кто-нибудь уже контр-пример.
Кто-то запросил краткий обзор алгоритма. Я сделаю то, что могу, но чтобы по-настоящему понять это, вам следует посетить http://www.dharwadker.org/tevet/isomorphism/ .
В алгоритме есть две фазы: фаза «подписи» и фаза сортировки. Первая фаза «подписи» (это мой термин для их процесса; они называют его генерацией «матрицы знаков») эффективно сортирует вершины в разные классы эквивалентности. Вторая фаза сначала упорядочивает вершины в соответствии с их классом эквивалентности, а затем применяет процедуру сортировки в классах эквивалентности, чтобы установить изоморфизм между двумя графами. Интересно, что они не претендуют на установление канонической формы для графов - вместо этого один граф используется как своего рода шаблон для второго.
Фаза подписи на самом деле довольно интересна, и я бы не стал здесь отдавать должное, пытаясь перефразировать ее. Если вы хотите получить более подробную информацию, я рекомендую перейти по ссылке, чтобы проверить его фазу подписи. Сгенерированная «матрица знаков», безусловно, сохраняет всю информацию об исходном графе, а затем устанавливает немного больше информации. После сбора подписей они игнорируют исходную матрицу, поскольку подписи содержат всю информацию об исходной матрице. Достаточно сказать, что подпись выполняет некоторую операцию, которая применяется к каждому ребру, связанному с вершиной, и затем они собирают мультимножество элементов для вершины, чтобы установить класс эквивалентности для вершины.
Второй этап - этап сортировки - является сомнительной частью. В частности, я ожидаю, что если их процесс сработает, то алгоритм, разработанный Анной Любив для обеспечения «вдвойне лексического упорядочения матриц» (см .: http://dl.acm.org/citation.cfm?id=22189 ). также будет работать, чтобы определить каноническую форму для графа.
Честно говоря, я не совсем понимаю процесс их сортировки, хотя думаю, что они неплохо описывают его. (Я просто не проработал все детали). Другими словами, я могу что-то упустить. Тем не менее, неясно, как этот процесс может сделать гораздо больше, чем случайно найти изоморфизм. Конечно, они, вероятно, найдут это с большой вероятностью, но не с гарантией. Если два графа не изоморфны, процесс сортировки никогда не найдет их, и этот процесс корректно отклоняет графы.