34 Stimmen

Haben Sie schon einmal eine Programmierlösung aus der Natur abgeleitet?

Wenn Sie einen Schritt zurücktreten und sich ...

  • die Natur der Tiere, Insekten und Pflanzen und die Probleme, die sie organisch gelöst haben
  • vielleicht sogar die Natur und das Gleichgewicht des Universums

Konnten Sie schon einmal ein Problem lösen, indem Sie einen Ansatz aus der Natur abgeleitet haben?

Ich habe gehört, dass Ameisenkolonie-Algorithmen u.a. die Optimierung der Lieferkette. Auch Fraktal Die "Geometrie der Natur" wurde auf ein breites Spektrum von Problemen angewandt.

Jetzt, wo der Frühling wieder da ist und die Welt wieder zum Leben erwacht, frage ich mich, ob jemand Erfahrungen hat, die er teilen kann.

Gracias

PS: Ich empfehle, sich den Film " Die Jagd nach der verborgenen Dimension " Nova-Folge über Fraktale.

20voto

Charlie Flowers Punkte 17000

Ich erinnere mich, dass ich ein Buch eines Mathematikers über das Gebiet der Mathematik gelesen habe, und er erwähnte ein Beispiel aus der Natur. Sein Beispiel aus der Natur half mir, einen Entwurf zu verbessern, an dem ich gerade arbeitete.

Sein Beispiel war folgendes: Er fuhr mit dem Auto und sah einige Vögel auf einem Telefonkabel. Die Vögel waren in gleichmäßigen Abständen angeordnet. Das lag nicht daran, dass es einen alles beherrschenden Vogel gab, der jedem sagte, wo er sitzen sollte. Vielmehr hatte jeder Vogel einen bestimmten "Algorithmus" in sich, um zu entscheiden, was zu tun ist, wenn ein anderer Vogel vorbeikommt. Vögel ziehen es vor, ihren Freiraum zu maximieren, nehme ich an.

Das hat mir geholfen, als ich noch ziemlich neu in OO war. Ich neigte immer dazu, die Dinge prozedural zu gestalten und die Intelligenz in "Gott-Objekten" zu zentralisieren. Als ich dies las, wurde mir klar, dass sich einzelne Objekte nur auf die Dinge konzentrieren können, die sie wissen und um die sie sich kümmern müssen, und dass das Ergebnis auf der Ebene des großen Ganzen trotzdem das sein kann, was man will. Dass das richtige Ergebnis "entstehen" kann, ohne "kontrolliert" zu werden.

7voto

Jörg W Mittag Punkte 349574

Ich persönlich habe noch nie ein Problem durch Anwendung von Ideen aus der Natur gelöst. Aber ich habe Probleme gelöst, indem ich die von der Natur inspirierten Lösungen anderer Menschen angewendet habe.

Viele Layout-Algorithmen für Graphen und Layout-Algorithmen im Allgemeinen basieren auf Mechanik (Federn, Gummibänder, Schwerkraft) oder einfachem, insektenähnlichem Verhalten (folge deinem Anführer, maximiere/minimiere den Abstand).

Und natürlich mag ich die objektorientierte Programmierung, die von Nygaard und Dahl für die Simulation von Objekten aus der realen Welt entwickelt und von Alan Kay, einem Mikrobiologen, perfektioniert wurde, der OO ausdrücklich nach der Art und Weise modellierte, wie einfache Zellen komplexe Organismen bilden können, die zu komplexem Verhalten fähig sind. In gewissem Sinne leitet also jeder, der OO verwendet, sein Programm indirekt von der Natur ab.

3voto

north5 Punkte 393

Ich arbeite in der Bildverarbeitung und beschäftige mich mit Blobby-Objekten, die zu nahe beieinander liegen, um sie durch einfaches Thresholding zu unterscheiden. Ich habe einen Wasserscheide-Algorithmus implementiert. Die Idee dahinter ist, dass man, wenn man sich die Objekte als Hügel auf einer Karte vorstellt und die Wasserscheide-Linie zwischen den beiden Hügeln berechnet, herausfinden kann, wo ein Objekt endet und das andere beginnt.

Ich wollte diesen Algorithmus verbessern und habe mich als Wanderer hoch oben im Lake District dabei ertappt, wie ich die Hügel und Täler mit meinen Fingern abgetastet habe (sehr zum Leidwesen meiner anderen Hälfte). Ich bin auch dafür bekannt, andere Wanderer mit Fragen zu löchern wie: "Wo hört dieser Hügel auf und wo beginnt der nächste? Und warum? Und warum hast du diesen Hügel nicht gezählt?"

Ich bin allerdings noch nicht so weit gegangen, dass ich meinen Laptop mitgenommen habe :)

3voto

MRFerocius Punkte 5399

Welches Konzept auch immer in der Natur vorkommt, wo wir ein mathematisches Modell (Differentialgleichung) erstellen können, wir können es auf die Programmierung anwenden, da letztere auf Logik und mathematischer Grundlage basiert, eine mehr als andere.

Ich denke, wir können es auch andersherum denken, z. B. das Beobachterschema, es gibt viele Arten, die dieses Schema ebenfalls anwenden, die Kette der Verantwortlichkeit usw.

Eine interessante Art zu denken...

Gut gemacht, Kumpel!

3voto

Mark Redman Punkte 23261

Wir haben eine "Wanze" programmatisch erstellt ...einmal...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X