Алгоритм выбора точек из матрицы - PullRequest
1 голос
/ 17 ноября 2011

Кажется, это простая проблема, но я застрял в этой проблеме. Проблема в том, что у меня матрица размером X x Y. Там может быть несколько точек в (I, J). Однако не обязательно, чтобы все местоположения (i, j) имели точку (то есть

Ответы [ 2 ]

3 голосов
/ 17 ноября 2011

Это проблема максимальное совпадение , которая разрешима по времени.Учитывая пример вашей проблемы, постройте двудольный граф с узлами a 1 ,…, a X , b 1 ,…, b Y и ребра a i b j для всех (i, j), где есть точка.Возьмите точки, соответствующие ребрам в максимальном соответствии.

2 голосов
/ 17 ноября 2011

Построить график.Точки - вершины графа.Каждая вершина связана со всеми вершинами в одной строке и одном и том же столбце - ребрах графа.Ваша задача - выбрать максимум независимый набор вершин (без общих ребер).

Independent_set

Эта проблема эквивалентна проблеме максимального клика в графе дополнения, поэтому можно использовать алгоритм Брон-Кербоша.

http://en.wikipedia.org/wiki/Clique_problem#Finding_maximum_cliques_in_arbitrary_graphs

http://en.wikipedia.org/wiki/Complement_graph

Алгоритм Брон-Кербоша

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...