Ich habe eine mxn zufällig generierte binäre Matrix geliefert, die den Durchfluss durch den Wert 1 ermöglicht, aber nicht durch den Wert 0. Ich muss feststellen, ob es einen Durchflussweg von oben nach unten gibt die zufällig generierte Matrix. Die 1 müssen nebeneinander liegen. Es ist für das Programmieren in Matlab. Jeder Hinweis auf hilfreiche Ressourcen zur Codierung des Problems oder Algorithmusbeispiele wird sehr geschätzt.Durchfluss durch eine binäre Matrix
Ich habe einen Code, der zunächst nach der ersten 1 in der obersten Zeile sucht. Der Code therafter durchsucht alle umliegenden Positionen, unterhalb und neben der aktuellen 1. Der Fluss kann nur diagonal nach unten, direkt links oder direkt nach rechts bewegt werden.
Der Zweck i zu sehen, ob es einen Weg gibt, die oben genannten Einschränkungen gegeben, nur
Random=randi([0 1],6,6)
n =0;
while Random[0,n] ~= 1
n=n+1;
end
CoOrds = [0,n];
for i = 0:5
if Random[i+1, n-1] == 1
n=n-1;
elseif Random [i,n-1] == 1
i = i-1;
n = n-1;
elseif Random [i+1,n] ==1
n=n;
elseif Random [i+1,n+1] ==1
n=n+1;
elseif Random[i,n+1] == 1
i = i-1;
n=n+1;
end
end
Bitte korrigieren: 'while Random [0, n] ~ = 1' –
Und alle zukünftigen Zugriff auf' Random' zur Verwendung der MATLAB-Syntax. –
Sehen Sie sich die folgenden Algorithmen an: [Tiefensuche (DFS)] (https://de.wikipedia.org/wiki/Depth-first_search) und [Breite-zuerst-Suche (BFS)] (https: // en.wikipedia.org/wiki/Breadth-first_search). Obwohl es möglich sein könnte, Matlab-Funktionen zu verwenden, um Ihre Antwort zu finden, würde ich empfehlen, in die Algorithmen zu schauen und zu versuchen, sie zu lernen, sie sind extrem nützlich und weit verbreitet. – mpaskov