Lassen Sie mich erklären:
Wenn ich bei einem Streudiagramm mit einer bestimmten Anzahl von Punkten n mental den nächsten Punkt zu einem beliebigen Punkt im Diagramm finden möchte, kann ich die meisten Punkte im Diagramm sofort ignorieren und meine Auswahl auf eine kleine, konstante Anzahl von Punkten in der Nähe eingrenzen .
Bei der Programmierung muss jedoch, wenn eine Menge von Punkten n gegeben ist, um den nächstgelegenen Punkt zu einem beliebigen Punkt zu finden, jeder zweite Punkt überprüft werden, nämlich die -Zeit.
Ich vermute, dass das visuelle Sehen eines Graphen wahrscheinlich einer Datenstruktur entspricht, die ich nicht verstehen kann. Denn beim Programmieren kann man durch Konvertieren der Punkte in eine strukturiertere Methode wie einen Quadtree die nächsten Punkte zu Punkten in in finden oder amortisiert zeit.O ( log n )
Es sind jedoch noch keine amortisierten Algorithmen (die ich finden kann) für die Punktsuche nach einer Datenumstrukturierung bekannt.
Warum scheint dies bei bloßer Sichtprüfung möglich zu sein?
Antworten:
Dein Modell dessen, was du mental tust, ist falsch. In der Tat arbeiten Sie in zwei Schritten:
Wenn Sie Pétanque (Boccia) oder Curling gespielt haben, sollte dies bekannt sein - Sie müssen nicht die Objekte untersuchen, die sehr weit vom Ziel entfernt sind, aber Sie müssen möglicherweise die nächsten Konkurrenten messen.
Um diesen Punkt zu veranschaulichen, welcher grüne Punkt ist dem roten Punkt am nächsten? (Nur um etwas mehr als 1 Pixel, aber es gibt einen, der am nächsten ist.) Um die Sache einfacher zu machen, wurden die Punkte sogar nach Entfernung farblich gekennzeichnet.
Dieses Bild enthält Punkte, die fast auf einem Kreis liegen, und insgesamt grüne Punkte. In Schritt 1 können Sie alle bis auf etwa Punkte entfernen, in Schritt 2 müssen Sie jedoch jeden der Punkte überprüfen . Es gibt keine a priori-Grenze für .n » 10 m m mm = 10 n ≫ 10 m m m
Bei einer physischen Beobachtung können Sie die Problemgröße von der gesamten Menge von Punkten auf eine eingeschränkte Kandidatenmenge von Punkten verkleinern . Dieser Schritt ist kein allgemein bekannter Berechnungsschritt, da er auf einem kontinuierlichen Prozess basiert. Kontinuierliche Prozesse unterliegen nicht den üblichen Intuitionen über die Komplexität der Berechnungen und insbesondere der asymptotischen Analyse.mn m
Nun fragen Sie sich vielleicht, warum ein kontinuierlicher Prozess das Problem nicht vollständig lösen kann. Wie kommt es zu diesen Punkten ? Warum können wir den Prozess nicht verfeinern, um ?m = 1m m = 1
Die Antwort ist, dass ich ein bisschen geschummelt habe: Ich präsentierte eine Menge von Punkten, die erzeugt werden, um aus fast nächsten Punkten und Punkten zu bestehen, die weiter entfernt sind. Im Allgemeinen erfordert die Bestimmung, welche Punkte innerhalb einer genauen Grenze liegen, eine genaue Beobachtung, die Punkt für Punkt durchgeführt werden muss. Bei einem groben Eliminierungsprozess können Sie viele offensichtliche Nichtkandidaten ausschließen. Um jedoch zu entscheiden, welche Kandidaten noch übrig sind, müssen sie aufgelistet werden.n - mm n - m
Sie können dieses System in einer diskreten Computerwelt modellieren. Angenommen, die Punkte werden in einer Datenstruktur dargestellt, die sie in Zellen auf einem Gitter sortiert, dh der Punkt wird in einer Liste für die Zelle gespeichert . Wenn Sie nach den Punkten suchen, die am nächsten liegen, und die Zelle, die diesen Punkt enthält, höchstens einen weiteren Punkt enthält, ist es ausreichend, die enthaltende Zelle und die 8 benachbarten Zellen zu überprüfen. Die Gesamtpunktzahl in diesen 9 Zellen beträgt . Dieses Modell berücksichtigt einige Schlüsseleigenschaften des menschlichen Modells:( ⌊ x ⌋ , ⌊ y ⌋ ) ( x 0 , y 0 ) m( x , y) ( ⌊ x ⌋ , ⌊ y⌋ ) ( x0, y0) m
quelle
Der Grund dafür ist, dass die Daten in einer für diese Abfrage optimierten "Datenstruktur" abgelegt wurden und dass die Vorverarbeitungszeit bei der Erstellung des Diagramms in die gemessenen Zeiten einbezogen werden sollte, die proportional zur Anzahl der Punkte ist und ein O (n) ergibt. Komplexität genau dort.
Wenn Sie die Koordinaten in eine Tabelle aufnehmen, in der die X- und Y-Koordinaten der einzelnen Punkte aufgeführt sind, wäre ein viel größerer mentaler Aufwand erforderlich, um die Entfernungen zwischen den Punkten zu berechnen, die Liste der Entfernungen zu sortieren und die kleinste zu wählen.
Als Beispiel für eine Abfrage, die visuell nicht gut funktioniert, können Sie den Nachthimmel betrachten und - basierend auf Ihrer Ansicht und einer Koordinatentabelle für jeden Stern - den erdnächsten Stern oder das Sternzeichen mit dem geringsten Abstand ermitteln die sterne, aus denen es besteht. Hier würden Sie ein zoombares und drehbares 3D-Modell benötigen, um dies visuell zu bestimmen, wobei ein Computer dies als im Wesentlichen dasselbe Problem wie Ihr Original ansehen würde.
quelle
Diese Frage geht von einer fehlerhaften Prämisse aus. Sie denken nur, Sie können mental den nächsten Punkt in Punkt finden, aber in der Tat, wenn Sie nicht können. Es fühlt sich so an, weil Sie es gewohnt sind, mit sehr kleinen Diagrammen umzugehen, aber kleine Beispiele können irreführend sein, wenn es um asymptotische Komplexität geht. Wenn Sie dies mit einem Streudiagramm mit einer Milliarde Punkten versuchen, werden Sie schnell feststellen, dass Sie dies nicht in O ( 1 ) Zeit tun können .O ( 1 ) O ( 1 )
quelle
O(numberOfPointsAboutTheSameDistanceFromTheTargetPointAsTheClosestPoint)
, was nicht unbedingt damit zu tun hatn
. In jedem Fall denke ich, dass eine Antwort darauf mögliche Datenstrukturen in Bezug darauf darstellen sollte, wie der menschliche Verstand sie wahrnimmt und abfragt. Einfach zu sagen, dass es nicht O (1) ist, fühlt sich ... faul an? unzureichend?Die Überlegenheit der Sichtprüfung hängt von entscheidenden Voraussetzungen ab, die im Allgemeinen nicht garantiert werden können:
count : (vgl. Kommentar von Nick Alger zur Antwort von DW) Gehen Sie von einer Punktzahl aus, die die Anzahl Ihrer Netzhautzellen übersteigt - Sie werden nicht einmal alle beteiligten Punkte identifizieren.
Varianz : (vgl. Kommentar von Nick Alger zur Antwort von DW) Nehmen Sie an, dass eine Menge von Punkten auf einem regulären (z. B. hexagonalen) Gitter kleinen zufälligen Störungen ausgesetzt ist. Wenn diese Störungen die Auflösung Ihrer Netzhaut (oder eines anderen überlagerten Gitters) unterschreiten, müssen Sie nicht nur den tatsächlichen Mindestabstand ermitteln, sondern mit hoher Wahrscheinlichkeit die falschen Punktpaare auswählen.
quelle
Der Computer löst ein anderes Problem. Es wird eine Liste von Punkten erstellt, kein gerastertes Bild von Punkten. Das Umwandeln von einer Liste in ein Bild, dh das "Zeichnen" der Punkte, dauert einige
O(n)
Zeit.Schnell! Welches ist am nächsten an (1,2):
Viel schwerer, oder? Ich wette, wenn ich die Liste doppelt so lang machen würde, müssten Sie doppelt so viel Arbeit machen.
Sie sind sich nicht bewusst, wie viel Arbeit Ihr Gehirn leistet. Sie wissen nicht "nur", welcher Punkt näher ist. Ihr Gehirn arbeitet am Rechnen, um diese Antwort herauszufinden und verfügbar zu machen. Das Gehirn arbeitet an jedem Punkt parallel, sodass die Zeit bis zum Abschluss ungefähr gleich bleibt, der Arbeitsaufwand jedoch mit der Anzahl der Punkte zunimmt.
quelle
Aus dem gleichen Grund vergessen Sie, wenn Sie ein Dreieck betrachten und wissen, dass es ein Dreieck ist, die vielen Millionen Berechnungen, die Sie ausführen, ohne es zu bemerken.
Neuronale Netze
Tatsächlich sind Sie ein neuronales Netzwerk, das mit Massen von Daten trainiert und geladen wurde.
Nehmen Sie das Sortierspiel für Säuglingsformen als Beispiel:
Wenn ein Kind zum ersten Mal damit interagiert, ist es wahrscheinlich, dass es versucht, Formen in die falschen Löcher einzufügen. Dies liegt daran, dass es sein Gehirn noch nicht trainiert hat oder nicht genügend Daten gefunden hat, um Netzwerke aufzubauen. Sie können keine Annahmen über Kanten, Größe usw. treffen, um zu bestimmen, welche Form zum Loch passt.
Dies scheint Ihnen offensichtlich zu sein (ich hoffe), da Sie diese Verbindungen hergestellt haben und vielleicht sogar denken, dass sie intuitiv sind und nicht abgebaut werden müssen. Beispielsweise wissen Sie nur, dass das Dreieck zum Dreieck passt und dass Sie die Größe nicht approximieren müssen , zähle die Kanten, etc. Dies ist nicht wahr, Sie haben alles in Ihrem Unterbewusstsein getan, der einzige bewusste Gedanke, den Sie hatten, war, dass es ein Dreieck ist. Viele Millionen von Berechnungen erfolgten, indem eine visuelle Repräsentation erstellt, ihre Repräsentation verstanden, die einzelnen Elemente erkannt und ihre Abstände geschätzt wurden. Die Tatsache, dass Sie über eine große Datenbank mit Informationen verfügten, gegen die abgefragt werden musste, machte dies einfacher.
Dein Gehirn ist nicht binär
Die Daten, an denen Ihr Gehirn arbeitet, sind nicht binär (so weit wir wissen), nicht wahr oder falsch. Sie enthalten viele Zustände, die wir zur Interpretation der Daten verwenden. Wir machen auch häufig Fehler, selbst wenn wir den richtigen folgen Dies liegt daran, dass sich die Daten häufig ändern. Ich würde eine Vermutung wagen, dass unser Gehirn viel mehr wie ein Quantencomputer funktioniert, bei dem sich die Bits bis zum Lesen in einem ungefähren Zustand befinden. Das heißt, wenn unser Gehirn überhaupt wie ein Computer funktioniert, ist es wirklich nicht bekannt.
Daher funktioniert ein Algorithmus zum Arbeiten mit Binärdaten nicht gleich. Sie können die beiden nicht vergleichen. In Ihrem Kopf verwenden Sie Konzepte für die Ausführung umfangreicher Datentypen, die weitaus mehr Informationen enthalten. Sie haben die Möglichkeit, Verknüpfungen dort zu erstellen, wo sie nicht explizit definiert sind. Wenn Sie ein Dreieck sehen, können Sie an Pink Floyds dunkle Seite der Monddecke denken.
Zurück zum Streudiagramm gibt es keinen Grund, warum Sie dies auf einem Computer nicht mit einer Bitmap und dem Messen des Abstands von einem Punkt in zunehmenden Radien durchführen können, bis Sie auf einen anderen Punkt stoßen. Es ist wahrscheinlich das Beste, was Sie einer menschlichen Annäherung erreichen können. Aufgrund der Datenbeschränkung und weil sich unser Gehirn nicht unbedingt um die Komplexität der Berechnungen kümmert und einen komplexen Weg einschlägt, um Dinge zu erledigen, ist dies wahrscheinlich viel langsamer.
Es wäre nicht O (1) oder sogar O (n), wenn n die Anzahl der Punkte ist. Stattdessen hängt seine Komplexität jetzt von der maximalen linearen Entfernung zwischen dem ausgewählten Punkt und einem Bildrand ab.
tl; dr
Ihr Gehirn ist kein Binärcomputer.
quelle
Sie vergessen einen wichtigen Schritt: Zeichnen Sie alle diese Punkte auf dem Diagramm, das Sie betrachten.
Dies ist notwendigerweise eine O (n) -Operation.
Danach kann ein Computer die Bilderkennungssoftware verwenden, um die ungefähren Punkte zu finden, die dem Zentrum am nächsten liegen, ähnlich wie es das menschliche Auge kann. Dies ist der schlimmste Fall einer O-Operation (sizeOfImage).
Wenn ein Mensch dasselbe wie der Computer tun soll, muss beachtet werden, dass der Computer eine Liste mit Koordinaten erhält und immer nur eine anzeigen kann.
quelle
Meine Interpretation der Frage:
Ich glaube nicht, dass diese Frage vereinfacht als Problem der rechnerischen Geometriekomplexität aufzufassen ist. Es sollte besser verstanden werden als: Wir nehmen die Fähigkeit wahr, die Antwort in konstanter Zeit zu finden, wenn wir können. Was diese Wahrnehmung und bis zu dieser Erklärung und bis zu menschlichen Einschränkungen erklärt, kann auch ein Computer.
Dies kann durch die Weber-Fechner-Gesetze untermauert werden , die besagen, dass unsere Wahrnehmung auf einer logarithmischen Skala des tatsächlichen physikalischen Maßes gemessen werden soll. Mit anderen Worten, wir nehmen eher relative als absolute Schwankungen wahr. Dies ist zum Beispiel der Grund, warum die Schallintensität in Dezibel gemessen wird.
Berücksichtigung der physiologischen Grenzen
Die obige Schlussfolgerung wird weiter gestützt, wenn die Bildaufnahmeschritte betrachtet werden.
Das OP achtete darauf, den Aufbau einer ordnungsgemäßen Datenstruktur, "wie eines Quadtrees", zu trennen, der bei mehreren Abfragen abgeschrieben wird.
Dies funktioniert bei den meisten Menschen nicht, die sich das Bild nicht merken. Ich denke, das Bild wird für jede Abfrage gescannt, aber das bedeutet nicht, dass alle Punkte gescannt werden: nicht beim ersten Mal und nicht für spätere Abfragen.
Ohne die tatsächlich zu verwendenden Einheiten zu kennen, zeigt dies einfach, dass die Variation für die Verarbeitung im schlimmsten Fall in derselben Größenordnung liegt wie andere Operationen mit konstanter Zeit. Daher ist es ganz natürlich, dass sich die wahrgenommene Zeit zum Finden des nächstgelegenen Punkts konstant anfühlt. . . ob wir den nächsten Punkt oder nur eine Menge der näheren Punkte bestimmen.
Über Gegenbeispiele und eine mögliche Lösung
Es ist natürlich leicht, Gegenbeispiele zu erstellen, die die Bestimmung des nächstgelegenen Punktes aus einer kleinen Sammlung von näheren Punkten für die Augen sehr schwierig machen. Aus diesem Grund fordert das OP tatsächlich einen Algorithmus, mit dem die meisten Punkte, mit Ausnahme der nächstgelegenen, schnell beseitigt werden. Dieses Problem der möglichen Schwierigkeit, zwischen mehreren Nahpunkten zu wählen, wird in vielen Antworten angesprochen, wobei sich das paradigmatische Beispiel der nächsten Punkte fast auf einem Kreis um den Referenzpunkt befindet. Typischerweise steht das Weber-Fechner-Gesetz der Unterscheidung kleiner Entfernungsschwankungen über ausreichend lange Entfernungen entgegen. Dieser Effekt kann tatsächlich durch das Vorhandensein anderer Punkte verstärkt werden, die, obwohl beseitigt, die Wahrnehmung von Entfernungen verfälschen können. Es wird also schwieriger sein, den nächstgelegenen Punkt zu identifizieren. und kann durchaus spezielle Untersuchungsschritte erfordern, wie die Verwendung von Instrumenten, die das Gefühl konstanter Zeit vollständig zerstören. Es scheint jedoch eindeutig außerhalb des vom OP berücksichtigten Bereichs von Experimenten zu liegen, weshalb es nicht sehr relevant ist.
Die zu beantwortende Frage , die vom OP tatsächlich gestellt wird, lautet, ob es eine Möglichkeit gibt, die meisten Punkte zu beseitigen, mit Ausnahme möglicherweise der wenigen verbleibenden Punkte, die sehr ähnliche Abstände zum Referenzpunkt zu haben scheinen.
Die Ablehnung von fortgeführten Anschaffungskosten ermöglicht keine Computerlösung, da alle Punkte geprüft werden müssen. Dies unterstreicht einen großen Unterschied in der Rechenleistung des Gehirns und der menschlichen Wahrnehmung: Es kann analoge Berechnungen mit Eigenschaften verwenden, die sich von digitalen Berechnungen deutlich unterscheiden . Dies ist in der Regel der Fall, wenn Milliarden von Punkten mit dem Auge nicht zu erkennen sind, da es nicht die Auflösung hat, etwas anderes als eine große Wolke mit verschiedenen Dunkeltönen zu sehen. Das Auge kann sich dann jedoch auf einen relevanten kleineren Teil konzentrieren und eine begrenzte Anzahl von Punkten sehen, die die relevanten Punkte enthalten. Es müssen nicht alle Punkte einzeln bekannt sein. Damit ein Computer dasselbe tut, müsste er einen ähnlichen Sensor haben und nicht die genauen numerischen Koordinaten jedes Punkts. Das ist ein ganz anderes Problem.
"Bloße Sichtprüfung" ist in mancher Hinsicht viel leistungsfähiger als digitale Berechnung. Und das liegt auch an der Physik der Sensoren, nicht nur an einer möglicherweise höheren Rechenleistung des Gehirns.
quelle
Wir hatten Studenten in Prüfungen, die, wenn sie gefragt wurden, wie schnell Sie ein Array sortieren können, behaupten, dass Computer dumm sind und n * log (n) (oder noch schlimmer) benötigen, während Menschen dies schneller können.
Die Antwort meines Professors war immer: Ich werde eine Liste von 10.000 Artikeln geben. Mal sehen, ob Sie eine Methode finden können, die schneller ist als ein Computer.
Und dann: Wie viele Prozessorkerne sind beteiligt, wenn Sie versuchen, den nächstgelegenen Punkt zu finden? Sie sind keine Einzelprozessor-Maschine, Sie haben ein neuronales Netzwerk, das bei solchen Aufgaben eine gewisse Flexibilität besitzt.
quelle
Ich glaube, @ Patrick87 hat Ihnen den Hinweis gegeben: Ihre Augen und Ihr Gehirn sind eine sehr parallele Rechenmaschine. Einige argumentierten, dass dies das Problem nicht erklärt, da für beliebig große Probleme eine begrenzte Anzahl von Parallelprozessoren keinen Unterschied macht.
Aber hier ist es so: Wie von vielen angedeutet, haben Ihre Augen (und Ihr Gehirn) eine begrenzte Fähigkeit, dieses Problem zu lösen. und das liegt daran, dass man keine beliebige Anzahl von Punkten in die Spannweite eines normalen menschlichen Blicks einpassen kann. Ihre Augen müssen sie zunächst unterscheiden können, und wenn es zu viele gibt, sind sie so nah, dass Ihre Augen den Unterschied nicht bemerken. Fazit: Es ist schnell genug, um Punkte zu erzielen, die in Ihre normale Sicht passen, dh nur sehr wenige. In anderen Fällen wird es fehlschlagen.
So können Sie dieses Problem in O (1) für kleine und einfache Fälle lösen, die Ihr Gehirn im Handumdrehen verarbeiten kann. Darüber hinaus kann es nicht und deshalb ist es nicht einmal O ( irgendetwas ), weil es höchstwahrscheinlich versagt.
quelle
Niemand hat erwähnt, dass dieses Problem auf einem Computer mit einem räumlichen Index sehr schnell gelöst werden kann. Dies entspricht dem Zeichnen der Punkte in einem Bild, damit Ihre Augen schnell scannen und die meisten Punkte entfernen können.
Es gibt einen sehr guten Indexierungsalgorithmus, der von Google und anderen verwendet wird, um die nächsten Punkte zu finden, die als Geohash bezeichnet werden. http://en.wikipedia.org/wiki/Geohash .
Ich denke, dass dies sogar den Wettbewerb zugunsten des Computers verschärfen wird. Einige der Antworten, bei denen lineares Denken zum Einsatz kam, haben mich nicht beeindruckt.
quelle
Wenn wir den Fall betrachten, in einem Punktsatz von n-Dimensionen im euklidischen Raum einen nächsten Nachbarn zu finden, ist die Komplexität in der Regel durch die Anzahl der Dimensionen begrenzt, wenn sie größer werden (dh größer als der Datensatz).
Das Problem, einen Punkt in der Nähe eines Knotens in einem Diagramm zu finden, hat einen euklidischen Ausdruck, wenn das Diagramm mit einer ausreichend kleinen Verzerrung in den euklidischen Raum eingebettet werden kann. Und wenn wir eine Adjazenzliste mit Gewichten verwenden, müssen wir die Adjazenzliste noch erstellen.
quelle
Andere Antworten sind gut, aber wie wäre es mit einer Zen-Gegenfrage, die die grundlegende Argumentation / Prämisse der ursprünglichen Frage auf das Äußerste ausdehnt, um einige Fehler zu zeigen [aber auch das Paradoxon im Kern der KI-Forschung ]:
Es gibt mehrere Möglichkeiten, Ihre Frage zu beantworten, aber im Grunde genommen sind unsere Denkprozesse und Gehirnwahrnehmungsfähigkeiten nicht unbedingt für die Selbstbeobachtung zugänglich, und die Selbstbeobachtung, die wir auf sie anwenden, kann irreführend sein. Zum Beispiel können wir Objekte erkennen, aber wir haben keine Möglichkeit, den quasi-algorithmischen Prozess, der dies ermöglicht, wahrzunehmen / zu erklären. Es gibt auch viele psychologische Experimente, die zeigen, dass es subtile Verzerrungen in unserer Wahrnehmung der Realität und insbesondere der Zeitwahrnehmung gibt, siehe z . B. Zeitwahrnehmung .
Im Allgemeinen wird von Wissenschaftlern vermutet, dass das menschliche Gehirn tatsächlich Algorithmen einsetzt , diese jedoch anders funktionieren als computergestützte, und es findet im Gehirn eine sehr große Menge an Parallelverarbeitung über neuronale Netze statt , die nicht sinnvoll zu vergleichen ist sequentielle Computeralgorithmen. Bei Säugetieren entfällt ein erheblicher Prozentsatz des gesamten Gehirnvolumens auf die visuelle Verarbeitung.
Mit anderen Worten, menschliche Gehirne sind in vielerlei Hinsicht hochoptimierte visuelle Computer, und sie verfügen tatsächlich in vielerlei Hinsicht über eine Fähigkeit, die die derzeit weltweit größten Supercomputer übertrifft, wie z. in menschlich konstruierter Software / Hardware im Vergleich zu Biologie, die über Millionen von Jahren hochgradig abgestimmt / weiterentwickelt / optimiert wurde.
quelle
Im Allgemeinen lösen Sie zwei verschiedene Probleme, und wenn Sie im selben Wettbewerb antreten, wird die Komplexität für Sie beide 0 (1). Warum? Machen wir die Situation etwas einfacher - nehmen wir an, Sie haben eine Linie mit einem roten Punkt und n grünen Punkten. Ihre Aufgabe ist es, einen grünen Punkt zu finden, der dem roten Punkt am nächsten kommt. Alles ist in der Grafik. Was Sie jetzt tun und was Sie programmieren, ist im Grunde dasselbe - gehen Sie einfach (in beide Richtungen) vom roten Punkt weg und überprüfen Sie, ob das Pixel, auf das Sie schauen, weiß / schwarz (Hintergrund) oder grün ist. Jetzt ist die Komplexität O (1).
Interessant ist, dass einige Datenpräsentationsmethoden sofort Antworten auf einige Fragen geben (O (1)). Das grundlegende Beispiel ist sehr einfach: Zählen Sie nur weiße Pixel auf einem schwarzen Bild (jeder Pixelwert ist 0 = schwarz oder 1 = weiß). Sie müssen lediglich alle Pixelwerte hinzufügen - die Komplexität ist für 1 weißes Pixel und für 1000 Pixel gleich, hängt jedoch von der Bildgröße ab - O (m), m = image.width * image.height. Ist es möglich, es schneller zu machen? Natürlich müssen wir nur eine andere Methode zum Speichern von Bildern verwenden, nämlich das Integralbild : Die Berechnung des Ergebnisses lautet nun O (1) (wenn Sie das Integralbild bereits berechnet haben). Eine andere Möglichkeit besteht darin, alle weißen Pixel in Array / Vektor / Liste / ... zu speichern und die Größe zu zählen - O (1).
quelle