In meinem Bereich (VFX, der Dinge wie Pfadverfolgung, Computeranimation, Partikelsimulation, Fluiddynamik, Bildverarbeitung usw. abdeckt) ist die algorithmische Komplexität von grundlegender Bedeutung. Es gibt keine Möglichkeit, dass etwas, das in schlechterer Zeit als linearithmisch arbeitet, bei Eingaben, die normalerweise Millionen von Scheitelpunkten, Polygonen, Voxeln, Partikeln und Texeln erreichen, in einer angemessenen Zeit abgeschlossen werden kann, insbesondere wenn viele dieser Dinge viele Male pro Sekunde abgeschlossen werden müssen Interaktives Echtzeit-Feedback.
Trotzdem ist die algorithmische Komplexität in Diskussionen, die normalerweise unter Kollegen geführt werden, nicht so stark ausgeprägt, vielleicht weil sie etwas Selbstverständliches und eher "rudimentär" ist. Wenn Sie einen Pfad-Tracer schreiben, wird im Allgemeinen davon ausgegangen, dass er in logarithmischer Zeit oder besser arbeitet und dass Datenstrukturen wie die Begrenzung von Volumenhierarchien bekannt und für den Leser relativ trivial zu implementieren sind. Ich hatte sogar einen erfahrenen Kollegen, der immer wieder sagte, dass Multithreading und SIMD wichtiger sind als Algorithmen, und ich glaube nicht, dass er dies in dem Sinne meinte, dass man von der Parallelisierung einer Blasensorte viel erwarten kann. Ich denke, er sagte, weil er es für selbstverständlich hielt, dass wir vernünftige Algorithmen anwenden würden,
Heutzutage liegt der Schwerpunkt häufig darauf, viele dieser bekannten Algorithmen besser auszunutzen und die zugrunde liegenden Eigenschaften der Hardware wie CPU-Cache, SIMD-Register und -Anweisungen, GPUs und mehrere Kerne besser auszunutzen. Zum Beispiel hat Intel eine neue Methode entwickelt, um das bekannte alte BVH aufzugreifen und das Konzept der "Strahlenpakete" zu entwickeln. Dabei wurden im Grunde genommen mehrere kohärente Strahlen gleichzeitig mit einer rekursiven Art von Baumdurchquerung getestet (was so klingen könnte) Dies ist mit einem Teil der Komplexität und des Overhead verbunden, außer dass dies mehr als nur durch die Tatsache kompensiert wird, dass diese Strahlen nun gleichzeitig durch SIMD-Anweisungen und -Register auf Ray / AABB- und Ray / Triangle-Schnittpunkte getestet werden können.
Ähnliches gilt für die Catmull-Clark-Unterteilung, die in der Computergrafik sehr rudimentär ist. Heutzutage sind GPU-Implementierungen, die sich der CC-Unterteilung mit Gregory Patches annähern, wie sie von Charles Loop und später von Pixar übernommen wurden, wettbewerbsfähig, heiß und äußerst effizient. Die einfachere CPU-Implementierung ist mittlerweile ziemlich veraltet, nicht unbedingt, weil sie hinsichtlich der algorithmischen Komplexität ersetzt wurde, sondern weil sie durch etwas ersetzt wurde, das mit der GPU gut funktioniert.
Und das ist in der Regel eine große Herausforderung heutzutage darin, den besten Algorithmus nicht in einer Weise zu entwickeln, die relativ unabhängig von den zugrunde liegenden Eigenschaften der Hardware ist. Tatsächlich habe ich mich in der Branche durch eine neuartige Beschleunigungsstruktur etabliert, die die Kollisionserkennung für die Animation von Zeichen und anderen weichen Körpern in den 90er Jahren mithilfe eines hierarchischen Segmentierungsansatzes erheblich beschleunigte, im Gegensatz zu einem räumlichen Index, der mir sehr viel gebracht hat Stellenangebote, aber heutzutage ist es nicht mehr so beeindruckend, seit ich es veröffentlicht habe, lange bevor wir so beeindruckende CPU - Caches und Mehrfachkerne und programmierbare GPUs hatten und was nicht, und heutzutage benutze ich einen völlig anderen Ansatz aufgrund der signifikanten Änderungen an der zugrunde liegende Hardware.