Wie finde ich ein Loch in einer 2D-Matrix?

Ich weiß, dass der Titel mehrdeutig erscheint, und aus diesem Grund habe ich ein Bild angehängt, das hilfreich ist, um das Problem klar zu verstehen. Ich muss Löcher in der weißen Region finden. Ein Loch ist als eine oder mehrere Zellen mit dem Wert '0' innerhalb des weißen Bereichs definiert. Ich meine, es muss vollständig von Zellen mit dem Wert '1' umschlossen sein (hier sehen wir z. B. drei Löcher, die als 1, 2 und 3 markiert sind ). Ich habe eine ziemlich naive Lösung gefunden: 1. Durchsuche die gesamte Matrix nach Zellen mit dem Wert '0'. 2. Führe eine DFS (Flood-Fill) aus, wenn eine solche Zelle (schwarze) angetroffen wird, und überprüfe, ob wir sie berühren können Die Grenze des rechteckigen Hauptbereichs 3. Wenn wir die Grenze während der DFS berühren können, ist dies kein Loch. Wenn wir die Grenze nicht erreichen können, wird dies als Loch betrachtet

Jetzt funktioniert diese Lösung, aber ich habe mich gefragt, ob es für dieses Problem eine andere effiziente / schnelle Lösung gibt.

Bitte teilen Sie mir Ihre Gedanken mit. Vielen Dank.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage