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.

2voto

Guge Punkte 4587

Sehr oft.

Ich bin manchmal im Wald spazieren gegangen, um über ein Problem nachzudenken. Und meistens haben die Lösungen, auf die ich stoße, etwas mit Bäumen zu tun.

Ich habe auch an von der Physik inspirierten UI-Ideen gearbeitet. Mit Konzepten wie Schwerkraft, Magnetismus oder elektrischer Abstoßung, um Elemente auf dem Display zu organisieren.

Ich habe auch einmal einen interessanten Vortrag über SOA gehört, ob Sie es glauben oder nicht. Die zentrale Idee des Vortrags war, dass verschiedene Subsysteme in einer SOA-Architektur wie Zellen in einem biologischen System zusammenarbeiten sollten. Das Thema war sehr aufschlussreich und zeigte, wie ein komplexes System tatsächlich funktionieren kann, selbst wenn es aus lose gekoppelten Komponenten besteht.

1voto

mouviciel Punkte 64583

Zu den bekanntesten gehören neuronale Netze .

1voto

MusiGenesis Punkte 72729

Meine Musiksoftware (siehe mein Profil) nutzt den Evolutionsprozess, um Musik zu erschaffen, in einer Art und Weise, die Richard Dawkins' Der blinde Uhrmacher (die Bilder anstelle von Musik erzeugte).

1voto

Robert Petermeier Punkte 4042

Die CS-Abteilung an meiner alten Universität hat seit den siebziger Jahren ein historisches Interesse an von der Natur inspirierten Algorithmen (ich glaube, der korrekte akademische Begriff lautet Natürliche Berechnungen . So kam ich mit einigen dieser Algorithmen in Berührung, insbesondere Entwicklungsstrategien die weithin bekannten neuronalen Netze, und die exotische Kunst der Membrane Computing . Ich habe auch einen Kurs über Data Mining belegt, in dem wir einige Algorithmen untersucht haben, die es einem Computersystem ermöglichen, aus einer Reihe von Daten zu lernen.

Ich würde sagen, dass jede Art von Algorithmus, der den Computer "lernen" etwas fällt in die Kategorie, die von der Natur abgeleitet ist. Daher fallen auch die eher einfachen Algos wie Naive Bayes in diese Kategorie, und wir alle nutzen sie wahrscheinlich auf die eine oder andere Weise, z. B. um Spam-E-Mails herauszufiltern.

Ich persönlich habe diese Art von Algorithmen nur in Universitätskursen oder bei meinen persönlichen Programmierexperimenten eingesetzt. Ich denke, es wird allgemein gelehrt, dass sie leistungsfähig sind, wenn auch in vielen Fällen weniger effizient als "klassische" deterministische Algorithmen. Daher sollte ein deterministischer Algorithmus immer bevorzugt werden - wenn es einen gibt, der das Problem löst! Nur wenn das Problem zu komplex ist, um mit deterministischen Algorithmen gelöst zu werden, kann die natürliche Berechnung eine bessere Lösung bieten. Nach meiner persönlichen Erfahrung ist dies tatsächlich der Fall. Ein kleines Beispiel: Die Evolutionsstrategie, die ich zur Lösung von Sudoku-Rätseln implementiert habe, hat mich einen halben Tag gekostet und lief mehrere Stunden, um die gleiche Lösung zu finden, die der klassische Backtracking-Algorithmus in weniger als einer Sekunde gefunden hat (für dessen Erstellung ich weniger als dreißig Minuten gebraucht habe ;-))

Ich erinnere mich nur daran, dass ein Kommilitone Evolutionsstrategien verwendet hat, um das Problem zu lösen, wie man einen Satz von Dateien optimal auf mehrere DVDs für die Archivierung verteilt, was, glaube ich, eine Anwendung des Knapsack-Problems oder des Bin-Packing-Problems ist, und es hat recht gut funktioniert. Offensichtlich können auch Ameisenkolonie-Algorithmen für dieses Problem verwendet werden. Jedenfalls vielen Dank für diese interessante Frage.

1voto

Kevin Peterson Punkte 7069

Ich habe das Problem noch nicht gelöst, aber ich denke, die ultimative Lösung für Reputation, "Karma" oder jede andere Variante der Konsensfindung in einer Gruppe von Menschen liegt in der Arbeit von Maynard Smith, die er in Evolution and the Theory of Games beschreibt. Insbesondere entwickelt er das Konzept einer evolutionär stabilen Strategie (ESS), d. h. ein Verhaltensmuster, das gegenüber schlechten Akteuren von außen robust ist.

Wenn wir davon ausgehen, dass jeder Mensch altruistisch ist, dann sind die Dinge einfach. Die von Maynard Smith so genannte "Dove"-Strategie, bei der immer auf andere zurückgegriffen wird, ist insofern eine effiziente Strategie, als niemand Zeit mit Kämpfen verschwendet. Aber es ist kein ESS, weil es von außen durch egoistische Akteure angegriffen werden kann. Dies wäre vergleichbar mit einer Website, auf der es nur Upvotes gibt. Sie würde scheitern, weil jeder alles an die Spitze wählen könnte.

Anspruchsvollere Systeme wie Stack Overflow und Slashdot fördern vor allem Upvotes, erlauben aber auch Downvotes. Sie sind robuster gegenüber Leuten, die nicht "kooperieren", aber sie sind immer noch anfällig für "Gaming". In beiden Fällen ist es einfach, schnell an Ansehen zu gewinnen, indem man als Erster einen Beitrag verfasst, etwas Lustiges statt etwas Nützliches schreibt und Ähnliches.

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