Pseudocode Naiver Algorithmus

s_1895

Mitglied
Hey Leute, ich schreibe gerade eine HAusarbeit und bin mir nicht sicher ob mein Pseudocode so richtig ist:
Es geht darum das ich ein Wort in einem Text suchen muss und für den naiven Algorithmus ist dies doch:
pos = Position
n= länge Text ; m = länge Wort
t = Text ; w = Wort

Java:
procedure NSMAlgorithmus
pos:= 1;
while pos <= n-m + 1 do
    j :=1;
    while (j>0) and (w[j]=t[pos+j-1]) do
        j:= j+1;
    if (j=m) then print ("Vorkommen an Position", pos);
    pos:=pos+1:
wend;
end.

und wofür steht dann am Ende das wend
 

s_1895

Mitglied
w(hile)end. -> Anzeige Schleifenende
also es soll immer um eine Position nach vorne gerückt werden wenn die zwei Buchstaben/Zeichen nicht übereinstimmen, es soll aber beim ersten Zeichen des Wortes beginnen, ich hab diesen Pseudocode abgeändert, da der Originale bei dem Letzen Buchstaben des Wortes beginnt

So wie in dem Bild soll es ablaufen
1626424841738.png
 
K

kneitzel

Gast
Macht die Prüfung j>0 in der While Schleife überhaupt Sinn? j wird ja nie negativ. Da fehlt also entweder ein setzen von j auf einen negativen Wert (Was ich so nicht machen würde) oder die Bedingung ist schlicht falsch :)

Und das pos = pos + 1 dürfte auch an der falschen Stelle sein. Könnte mit daran liegen, dass die Einrückung nicht korrekt ist.

Edit: Das Zweite könnte von der Aufgabe abhängen, je nachdem, was erwartet wird, wenn z.B. nach "aa" gesucht werden soll in dem Text mit "aaaa" .
 

s_1895

Mitglied
würde es so mehr Sinn ergeben?


Java:
procedure NSMAlgorithmus
pos:= 1;
while pos <= n-m + 1 do
    j :=1;
    while (w[j]=t[pos+j-1]) do
        j:= j+1;
    
    if (j=m) then print ("Vorkommen an Position", pos);
pos:=pos+1;
wend;
end.
 
K

kneitzel

Gast
Also du hast zwei While ... do aber nur ein wend. (Das war mir so genau nicht aufgefallen beim ersten Blick - sonst hätte ich den zweiten Punkt anders formuliert.)

Das ist so also schon nicht korrekt. Du brauchst also noch ein weiteres wend. Auf Grund der Einrückung wirst Du vermutlich sowas meinen:
Java:
procedure NSMAlgorithmus
    pos:= 1;
    while pos <= n-m + 1 do
        j :=1;
        while (w[j]=t[pos+j-1]) do
            j:= j+1;
        wend
        
        if (j=m) then print ("Vorkommen an Position", pos);
        pos:=pos+1;
    wend;
end.

Hast du es mal durchgespielt? Spiel es mal durch mit diesen Fällen:
Gesucht wird jeweils "das"
- ""
- "d"
- "das"
- "xdas"
- "dasx"
- "xxda"

Und achte auf die Indices. Du darfst nicht versuchen auf Zeichen zuzugreifen, die es nicht gibt.
 
K

kneitzel

Gast
Was passiert mit der inneren while schleife, wenn das letzte Zeichen des zu suchenden Wortes korrekt war?

Welchen Wert hat j, wenn die innere while schleife verlassen wird?
 
K

kneitzel

Gast
So eine Veränderung wäre möglich. Aber was passiert denn, nachdem das letzte Zeichen geprüft wurde und es gleich ist? Dann wird j wieder eins hoch gezählt. Und dann?
 
K

kneitzel

Gast
Ok, nehmen wir diesen Code:
Java:
        while (w[j]=t[pos+j-1]) do
            j:= j+1;
        wend

pos=1
j = 1
w = a, b, c
t = a, b, c

Was passiert?
w[1] = t[1+1-1] --> a = a
-> j = 2
w[2] = t[1+2-1] --> b = b
-> j = 3
w[3] = t[1+3-1] --> c = c
-> j = 4
w[4] = t[1+4-1] ????

w[4] gibt es nicht, t[4] gibt es nicht.
 

s_1895

Mitglied
Ok, nehmen wir diesen Code:
Java:
        while (w[j]=t[pos+j-1]) do
            j:= j+1;
        wend

pos=1
j = 1
w = a, b, c
t = a, b, c

Was passiert?
w[1] = t[1+1-1] --> a = a
-> j = 2
w[2] = t[1+2-1] --> b = b
-> j = 3
w[3] = t[1+3-1] --> c = c
-> j = 4
w[4] = t[1+4-1] ????

w[4] gibt es nicht, t[4] gibt es nicht.
while (m<=j) and (w[j]=t[pos+j-1]) do

meinst du dann so?
 
K

kneitzel

Gast
Das sieht deutlich besser aus. Zusammen mit #11 von Dir könnte es das gewesen sein.

Ich habe Dir eine Reihe Test-Cases genannt. Spiel die doch einfach einmal durch (mit Papier und Stift). Das ist eine ganz wichtige Übung, damit Du besser so Algorithmen im Kopf durchspielen kannst.

Und Du kannst so Pseudo-Code natürlich auch in Java umsetzen um es dann zu testen.
 

s_1895

Mitglied
Java:
procedure NSMAlgorithmus
    pos:= 1;
    while pos <= n-m + 1 do
        j :=1;
        while (m<=j) and (w[j]=t[pos+j-1]) do
            j:= j+1;
        wend
       
        if (j=m) then print ("Vorkommen an Position", pos);
        pos:=pos+1;
    wend;
end.


Tatsächlich probiere ich das immer auf Papier aus um zu gucken ob es funktioniert

Danke dir/euch
war mir eine sehr große Hilfe
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Pseudocode erklären Java Basics - Anfänger-Themen 6
D Algorithmus in Pseudocode mit log2(n) Operationen erstellen Java Basics - Anfänger-Themen 3
D Hilfe um Pseudocode Analyse! Java Basics - Anfänger-Themen 1
P Eigenschaft eines imperativen Algo (Pseudocode) sofort erkennen Java Basics - Anfänger-Themen 1
H Pseudocode zu Java Java Basics - Anfänger-Themen 7
A Rekursiver Pseudocode Java Basics - Anfänger-Themen 4
L Sudoku Backtracking Pseudocode Java Basics - Anfänger-Themen 3
E Hilfe bei Pseudocode-Frage Java Basics - Anfänger-Themen 5
B Methoden Pseudocode Java Basics - Anfänger-Themen 19
D Pseudocode Java Basics - Anfänger-Themen 3
J Von Pseudocode zu JavaCode Java Basics - Anfänger-Themen 7
B Pseudocode: rekursiv/nicht-rekursiv Java Basics - Anfänger-Themen 1
K Algorithmus entwickeln Java Basics - Anfänger-Themen 1
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
C Gewinnspiel erstellen mit Algorithmus Java Basics - Anfänger-Themen 3
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10
H Minimax Algorithmus in Tic Tac Toe Java Basics - Anfänger-Themen 3
M Minimax-Algorithmus für Vier gewinnt Java Basics - Anfänger-Themen 11
ohneInformatik; Trockentest Algorithmus, mathematischen Zusammenhang angeben Java Basics - Anfänger-Themen 3
M Minimax-Algorithmus Java Basics - Anfänger-Themen 17
mervanpolat Binary Search Algorithmus ausführen Java Basics - Anfänger-Themen 1
J Rekursiver Algorithmus Java Basics - Anfänger-Themen 9
M monte carlo Algorithmus für 4 gewinnt Java Basics - Anfänger-Themen 12
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
rosima26 Merge-Algorithmus Java Basics - Anfänger-Themen 53
C Ein Algorithmus soll schneller werden Java Basics - Anfänger-Themen 24
D Dijkstra Algorithmus Hilfe!! Java Basics - Anfänger-Themen 9
U Den Kuchen aufteilen - aber wie? (Rebalancing-Algorithmus) Java Basics - Anfänger-Themen 14
H String verschlüsseln - eigener Algorithmus Java Basics - Anfänger-Themen 104
T Algorithmus für Index mit min-Wert Java Basics - Anfänger-Themen 2
Düsseldorf2002 Testen meines Algorithmus Java Basics - Anfänger-Themen 1
D Primzahlen Rechner nach Eratostenes von Kyrene Algorithmus Java Basics - Anfänger-Themen 2
KogoroMori21 Frage zum Euklidischen Algorithmus Java Basics - Anfänger-Themen 11
S Algorithmus java searchAll IKey Java Basics - Anfänger-Themen 4
S Algorithmus Datensätze einfügen wenn... Java Basics - Anfänger-Themen 26
KogoroMori21 MergeSort Algorithmus Java Basics - Anfänger-Themen 2
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
fendix Compiler-Fehler Algorithmus zur Bestimmung von Primzahlen Java Basics - Anfänger-Themen 7
S Algorithmus (reelle Zahl <65536 von dezimal zu dual) max. 10 Nachkommastellen Java Basics - Anfänger-Themen 4
G Algorithmus Graphen Java Basics - Anfänger-Themen 10
D Input/Output fehlerhafter Algorithmus zum Ersetzen von Array-Werten nach logischem Schema Java Basics - Anfänger-Themen 1
N Selection Algorithmus: Methode wird nicht erkannt (BlueJ) Java Basics - Anfänger-Themen 3
U Meinung zum Dijkstra Algorithmus Java Basics - Anfänger-Themen 6
U Dijkstra Algorithmus Laufzeit Java Basics - Anfänger-Themen 3
L Math.exp also eigenen Algorithmus Java Basics - Anfänger-Themen 2
Kirby.exe Algorithmus entwickeln Java Basics - Anfänger-Themen 37
M Algorithmus Max-Heap? Java Basics - Anfänger-Themen 3
I Labyrinth auf der Basis eines rekursiven Algorithmus Java Basics - Anfänger-Themen 27
CptK Best Practice Algorithmus nach jedem Schritt zum Visualisieren pausieren Java Basics - Anfänger-Themen 3
A Algorithmus effizienter machen Java Basics - Anfänger-Themen 1
V Algorithmus zur fortlaufenden Berechnung des duechscjnt Java Basics - Anfänger-Themen 1
M Dijkstra Algorithmus in Graphen auf mehrere verschiedene Knoten anwenden lassen Java Basics - Anfänger-Themen 11
O Labyrinth Algorithmus Java Basics - Anfänger-Themen 3
G Quicksort Algorithmus Java Basics - Anfänger-Themen 12
S Binäre-Suche Algorithmus Java Basics - Anfänger-Themen 1
C Laufzeit eines Sortier-Algorithmus ermitteln Java Basics - Anfänger-Themen 4
H aufgabe java luhn algorithmus Java Basics - Anfänger-Themen 10
A Datenstruktur für Savings Algorithmus und Planung von kleinen Programmierprojekten Java Basics - Anfänger-Themen 1
J Algorithmus für eine Reihe implementieren Java Basics - Anfänger-Themen 2
S Dijkstra Algorithmus funktioniert nicht Java Basics - Anfänger-Themen 4
N Denksportaufgabe durch Algorithmus lösen Java Basics - Anfänger-Themen 2
S Problem mit einem rekursivem FloodFill Algorithmus Java Basics - Anfänger-Themen 62
B Algorithmus Square und Multiply Java Basics - Anfänger-Themen 3
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
D Frage Boyer-Moore Algorithmus Java Basics - Anfänger-Themen 7
M Komplexität Algorithmus Java Basics - Anfänger-Themen 8
H Zeichen im algorithmus Java Basics - Anfänger-Themen 4
B Code Verständnisfragen - FLoyd Warshall Algorithmus Java Basics - Anfänger-Themen 1
B Algorithmus zum entmischen einer Zahlenfolge Java Basics - Anfänger-Themen 15
X Minimax-Algorithmus über alle Kanten möglich? - Kanten darstellen Java Basics - Anfänger-Themen 1
T Algorithmus zur Überprüfung eines binären Suchbaums Java Basics - Anfänger-Themen 2
K Best Practice Algorithmus für Berechnung von Zahlenreihenfolge Java Basics - Anfänger-Themen 12
M Simpler Algorithmus läuft extrem langsam. Java Basics - Anfänger-Themen 3
K Erste Schritte Brute Force Algorithmus Java Basics - Anfänger-Themen 2
L Frage zu BubbleSort Algorithmus Java Basics - Anfänger-Themen 2
B gibt es ein Stundenplan-Algorithmus? Java Basics - Anfänger-Themen 11
O Algorithmus-Problem Java Basics - Anfänger-Themen 5
P Euklidischer Algorithmus Java Basics - Anfänger-Themen 9
L Greates Commong Dividend - euklidischer Algorithmus, modulos not positive Java Basics - Anfänger-Themen 5
J Euklidischer Algorithmus Java Basics - Anfänger-Themen 1
S Quicksort Algorithmus Java Basics - Anfänger-Themen 2
S GraphNode --- Dijkstra Algorithmus : NullPointerException Java Basics - Anfänger-Themen 1
B Rekursive Algorithmus schreiben Java Basics - Anfänger-Themen 8
V Algorithmus in einer Methode ausführen Java Basics - Anfänger-Themen 3
M Implementierung des Knuth-Morris-Pratt-Algorithmus Java Basics - Anfänger-Themen 0
M Dijkstras Algorithmus Java Basics - Anfänger-Themen 5
S Zusammenhang Datenstruktur/Algorithmus Java Basics - Anfänger-Themen 1
M Simulation - Algorithmus Java Basics - Anfänger-Themen 3
F Erste Schritte Hilfe beim Algorithmus finden Java Basics - Anfänger-Themen 8
D Algorithmus für Punkte auf einem Kreis Java Basics - Anfänger-Themen 0
D Algorithmus zu gegebener Laufzeit implementieren Java Basics - Anfänger-Themen 1
B Doppelte Werte aus Array entfernen ohne Import - Algorithmus Java Basics - Anfänger-Themen 5
C Ideen für einen Algorithmus Java Basics - Anfänger-Themen 1
F Best Practice Algorithmus optimieren - Binaeruhr Java Basics - Anfänger-Themen 2
S Euklid Algorithmus zur Berechnung des GGTs Java Basics - Anfänger-Themen 2
L Welcher Algorithmus ist das ? Java Basics - Anfänger-Themen 9
J Rekursiver Horner-Schema-Algorithmus - Verstehe ich ihn richtig? Java Basics - Anfänger-Themen 2
O Java Zufalls-Verteil-Algorithmus Java Basics - Anfänger-Themen 3
P ganz simpler algorithmus Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben