WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Programmieren von Brute Force

 

Troll

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2012, 11:17     Titel: Programmieren von Brute Force
  Antworten mit Zitat      
Hallo,

ich hab ein Problem. Ich bin Matlab Anfänger und will eine Brute Force Methode programmieren. Dabei hab ich eine feste Anzahl an Prinzipien die ich vergleichen will und eine variable Anzahl an Aufgaben.

Dementsprechend würde ich bei 5 Pinzipien und 3 Aufgaben 125 Möglichkeiten durchprobieren müssen.

1 1 1
1 1 2
1 1 3
...
1 3 1
1 3 2
...
5 5 1
5 5 2
5 5 3
5 5 4
5 5 5

Kann mir einer sagen, wie ich das programmieren kann? Am besten gleich mit einer variablen Aufgabenzahl.

Vielen Dank


Bluesmaster
Forum-Century

Forum-Century



Beiträge: 203
Anmeldedatum: 13.11.11
Wohnort: Gera
Version: 2012a
     Beitrag Verfasst am: 05.06.2012, 11:35     Titel:
  Antworten mit Zitat      
Das ist sehr abstrakt beschrieben (imo).
Unter Brute-Force verstehe ich Algorithmen, ("Prinzipien"?) die für eine
vorgegebene "Aufgabe" alle oder viele mögliche Verlaufe durchexerzieren


Falls die feste an Anzahl von "Prinzipien" Algorithmen sein sollen dann würde
ich die als matlab-"function" kapseln so, dass die "Aufgabe" als funktionsparameter übergeben wird und dann alle Aufgaben durchlaufen.

Code:

variableAnzahlAufgaben = 5;

for i = 1:variableAnzahlAufgaben ;

algorithmus1('Aufgabe', i );


algorithmus2('Aufgabe', i )


algorithmus3('Aufgabe', i )



end

 



Aber ich werde das Gefühl nicht los, dass wir uns hier gründlich falsch verstehen. Naja irgendwie muss man sich ja herantasten


Gruß

Blues
Private Nachricht senden Benutzer-Profile anzeigen
 
Troll

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2012, 12:15     Titel:
  Antworten mit Zitat      
Erstmal danke für deine Antwort, aber wie du schon vermutet hast, hab ich das anders gemeint. Ich versuche mich mal anders auszudrücken.

Für mich hieß Brute Force bis jetzt immer das es ein Algorithmus ist der alle möglichen Kombinationen ausprobiert. Hier habe ich Kombinationen bzgl. der Prinzipien.

Generell habe ich 5 feste Prinzipien und eine unterschiedliche Anzahl von Aufgaben. Es sollen die Prinzipien bzgl. jeder Aufgaben verglichen werden. Deshalb auch meine Darstellung der Zahlenkombinationen im ersten Beitrag.

Kannst du meinen Ausführungen jetzt besser folgen?

Gruß
Troll
 
Bluesmaster
Forum-Century

Forum-Century



Beiträge: 203
Anmeldedatum: 13.11.11
Wohnort: Gera
Version: 2012a
     Beitrag Verfasst am: 05.06.2012, 14:11     Titel:
  Antworten mit Zitat      
Der Begriff "Prinzip" irritiert. Was ist damit gemeint?
Ist dein "Prinzip" ein konkreter Brute-Force-Algorithmus der eine "Aufgabe" auf eine bestimmte Art und Weise löst und du möchtest diese
"Art-und-Weisen" auf Performence vergleichen?


Ich habe dein Zahlenbeispiel gesehen mathematisch ist das
"Ziehen mit zurücklegen, mit Beachtung der Reihenfolge"

also 5^3 Möglichkeiten

Falls es dir nur darum geht alle diese Möglichkeiten zu erzeugen....
tja...eine Lücke in Matlab für "K-Permutationen" mit Wiederholung gibt
es nix aber es gibt das hier:

http://www.mathworks.com/matlabcent.....inations-and-permutations
Private Nachricht senden Benutzer-Profile anzeigen
 
Troll

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2012, 15:31     Titel:
  Antworten mit Zitat      
Der Begriff Prinzip kann auch synonym mit dem Begriff Methode verwendet werden.

Den Link werde ich mir mal angucken.
 
eey
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 31.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2012, 13:00     Titel:
  Antworten mit Zitat      
Also für mich klingt das so als wäre mit "Prinzip" einfach eine Variable gemeint, also eine Zahl aus einem bestimmten Wertebereich. Bei dir wären das dann 3 Variablen die jeweils die Werte 1,2,3,4 und 5 annehmen können.

Wenn das gemeint ist, kann man das eigentlich sehr einfach mit ineinander geschachtelten For-Schleifen lösen. Beispiel:

Gegeben sei folgende 2-Dimensionale Funktion:

f(n_1,n_2) = |5 - (n_1 + n_2)|!

Gesucht sei das Minimum dieser Funktion. Da die Funktion nicht stetig ist (nur für Natürliche Zahlen definiert), muss man hier wohl Brute-Force anwenden um das Minimum zu finden.

Mit ein bisschen überlegen sieht man natürlich dass die Funktion genau dann ihr Minimum erreicht wenn n1 + n2 = 5 oder n1 + n2 = 4 gilt, denn dann hat die Fakultät ihr Minimum in den Natürlichen Zahlen, nämlich 1.

Da es mehrere Möglichkeiten gibt 4 oder 5 zu bilden (1+3 oder 2+2 oder 3+2 usw.) hat die Funktion mehrere Minima. Den Wertebereich kann man ja jetzt ganz einfach Brute-Forcen:

Code:

function [Funktionswert, Var1, Var2] = BruteForce()

    alterWert = Inf;

    for i=1:10
        for j=1:10

            Wert = factorial(abs(5 - (i + j)));

            if Wert < alterWert
                gefundenesMinimum = Wert;
                gefundenes_n1 = i;
                gefundenes_n2 = j;
            end

            alterWert = gefundenesMinimum ;

        end
    end

    Funktionswert = gefundenesMinimum;
    Var1 = gefundenes_n1;
    Var2 = gefundenes_n2;

end
 


Diese Funktion Bruteforced jetzt die Werte n1 und n2 jeweils von 1 bis 10 und ermittlet daraus das Minimum (momentan nur ein einziges von vielen, aber hier gehts ja nur ums Prinzip).

Das müsstest du so auch für dein Problem anwenden können, wenn ich dich richtig verstanden habe.

Schöne Grüße,
eey
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.