względu n * m matrycę z możliwych wartości o 1, 2 oraz pustego:dowiedzieć prostokątnych obszarów o określonych właściwościach w matrycy
. . . . . 1 . .
. 1 . . . . . 1
. . . 2 . . . .
. . . . 2 . . .
1 . . . . . 1 .
. . . . . . . .
. . 1 . . 2 . .
2 . . . . . . 1
ja wyszukać wszystkie bloki B (zawierających wszystkie wartości między (x0, Y0) i (x1, y1)), że
- zawierać co najmniej jeden '1'
- nie zawierają '2'
- nie są podzbiorem innego bloku z powyższych właściwości
przykład:
czerwony, zielony i niebieski powierzchnia wszystkich zawierać '1' nie '2', i nie jest częścią większego obszaru. Na tym zdjęciu są oczywiście więcej niż 3 takie bloki. Chcę znaleźć wszystkie te bloki.
Jaki byłby szybki sposób na znalezienie wszystkich tych obszarów?
Mam działające rozwiązanie brutalnej siły, iterując po wszystkich możliwych prostokątach, sprawdzając, czy spełniają one dwa pierwsze kryteria; następnie powtarzanie wszystkich znalezionych prostokątów, usuwanie wszystkich prostokątów zawartych w innym prostokącie; i mogę to przyspieszyć, najpierw usuwając kolejne identyczne wiersze i kolumny. Ale jestem dość pewny, że istnieje o wiele szybsza droga.
Wszystkie krawędzie tych bloków znajdują się na krawędzi wykresu lub obok "2". Być może możesz coś z tym zrobić. – robert
Jeśli nie dostałeś dobrej odpowiedzi tutaj, możesz również poprosić o nią w http://cs.stackexchange.com. –