Can't import image?

Hallo,

ich erstelle gerade einen kleinen Algorithmus, bei dem man ein Bild einfügt, welches dann anhand der Stärke der Pixel in Graustufen eingeteilt wird und dann das Bild in einer anderen Art ausgibt.

Ich nutze zum Lesen der Bilder das PIL-Modul.

Ich bin eigentlich schon fast fertig, aber da kommt die Fehlermeldung, dass das Modul etwas nicht importieren kann.

Schaut es euch selbst an:

Microsoft Windows [Version 10.0.19043.1237]
(c) Microsoft Corporation. Alle Rechte vorbehalten.
C:\Users\User\AppData\Local\Programs\Algoritmika\vscode\data\extensions\algoritmika.algopython-20211015.95910.0\temp>C:/Users/User/AppData/Local/Programs/Algoritmika/algovenv/Scripts/activate.bat
(algovenv) C:\Users\User\AppData\Local\Programs\Algoritmika\vscode\data\extensions\algoritmika.algopython-20211015.95910.0\temp>cd c:/Users/User/OneDrive/Dokumente/Soundaufnahmen
(algovenv) c:\Users\User\OneDrive\Dokumente\Soundaufnahmen>C:/Users/User/AppData/Local/Programs/Algoritmika/algovenv/Scripts/python.exe c:/Users/User/OneDrive/Dokumente/Soundaufnahmen/test.py
Traceback (most recent call last):
 File "c:/Users/User/OneDrive/Dokumente/Soundaufnahmen/test.py", line 1, in <module>
  from PIL import image
ImportError: cannot import name 'image' from 'PIL' (C:\Users\User\AppData\Local\Programs\Algoritmika\algovenv\lib\site-packages\PIL\__init__.py)
(algovenv) c:\Users\User\OneDrive\Dokumente\Soundaufnahmen>

Falls ihr auch Fehler beim Code seht, könnt ihr es mir auch gern mitteilen, da ich noch ziemlich neu bin.

Computer, Technik, Programm, programmieren, Image, Informatik, Python, Technologie, Algorithmus
Java - Distanzmatrix Algorithmus, Wie ansetzen?

Hallo, ich bin gerade dabei ein Graphenprogramm zu schreiben und stecke bisschen bei der Distanzmatrix.

Ich weiß nicht ob sich jemand bei Graphentheorie auskennt oder nicht aber der Algorithmus für die Distanzmatrix ist relativ einfach. Nur das umsetzen in Code fällt mir sehr schwer und deswegen hoffe ich, dass ihr mir vielleicht dabei helfen könnt..

Der Algorithmus für eine Distanzmatrix lautet so:

Man hat eine Eingangsmatrix (Adjazentmatrix).
Die könnte so aussehen:

Man markiert sich alle Nuller die in der Adjazentmatrix vorkommen (AUßER DIE HAUPTDIAGONALE, DIE BLEIBT UNBERÜHRT).

Dann erstellt man sich eine eigene Matrix die man "DistanzMatrix" nennen kann und setzt alle Nuller die eben in der Adjazentmatrix vorkommen auf "Unendlich" oder auch auf INTEGER.MAX_VALUE in der Programmiersprache .

Das schaut dann so aus:

Also haben wir jetzt 2 Matrizen. Bis dahin habe ich es auch geschafft in meinem Programm. Die Ausgabe schaut bei mir so aus:

Die "-9" sind alle Nuller, die auf UNENDLICH gesetzt sind (siehe zweites Bild).

Der nächste Schritt ist es die Potenzen der Eingangsmatrix (Adjazentmatrix) zu berechnen. Das habe ich ebenfalls schon geschafft im Code.

Das heißt, die Adjazentmatrix (siehe Bild 1) wurde potenziert und so könnte das Ergebnis der Potenzberechnug aussehen.

Man schaut sich jetzt alle Nuller (außer die Hauptdiagonale von der Eingangsmatrix an (siehe Bild 1)) und markiert sich nur die Zahlen (rot), die sich von der Potenzierung der Eingangsmatrix verändert haben. (Außer die Nuller (=Neue Nuller die durch die Potenzierung entstanden sind bleiben auch weiterhin eine Null))

Und der letzte Schritt ist es jetzt, die von mir erstellte DistanzMatrix upzudaten, indem ich im ersten Schritt alle rote Zahlen von A²(G) in 2 umwandle. Alle Nuller die übrig bleiben, werden wieder in UNENDLICH umgewandelt.

Und das wird jetzt so oft wiederholt, bis es keine UNENDLICH Zeichen mehr in der Distanzmatrix gibt. Und aus UNENDLICH wird 3. Und immer so weiter.. Falls es zb nach der fünften Potenzierung immer noch Nuller bzw UNENDLICH Werte gibt dann wird aus UNENDLICH 5.

Somit ist D³(G) das Ergebnis.

Ich hoffe ich konnte es ausführlich genug erklären

Danke

Bild zu Frage
Computer, Schule, Technik, programmieren, Java, Informatik, Technologie, Algorithmus, Graphentheorie
Maze Solving Algorithmus?

Hi,

ich will mehrere Algorithmen implementieren, womit ich ein Maze lösen kann. Dabei gehts mir um Geschwindigkeit. Das gesamte Maze ist schon bekannt, also die "Maus" kann von jedem Punkt erfahren ob es eine Wand, oder ein Weg ist.

Derzeit habe ich den Wavepropagation, den Wallfollower und einen Kombi algorithmus implementiert. Der Kombi algorithmus entstand, nachdem ich Rekursion versucht hatte, bis ich gemerkt habe, dass das ja garnicht in C# geht xD

Dann hab ich per While loop einfach immer geguckt welche Richtungen sind möglich und dann halt random eine Richtung gewählt. Wenns deadend ist, halt wieder zurück, bis eine unbesichtigte Zelle kommt. Vllt habt ihr ja eine Idee wie der heißt.

Für mich neuling kling der Wavepropagation algorithmus derzeit am optimalsten, denn er hört auf, sobald das ziel gefunden ist.

Man könnte evtl. den noch Optimieren, indem man an an jeder Kreuzung ein Node setzt.

Der Djiktra klingt für mich als Neuling wie ähnlich des Wavepropagation Algorithmus, zumindest wenn man nicht die Map in nodes (bei jeder Kreuzung) plaziert.

Gibts einen viel schnelleren?

Die Map ist so um die 10k x 10k bis 15k x15k

Evtl auch mehr, wenn ich diese nicht painten würde, sondern nur als byte array lasse. Dauert aber so schon lang genug xD

Generiert wird dieses per Binary Tree derzeit. Dieser ist wenigstens Ultra schnell. Prims algorithmus ist mir zu langsam für diese Größenordnung.

Computer, Mathematik, programmieren, Datenverarbeitung, Informatik, Algorithmus

Meistgelesene Fragen zum Thema Algorithmus