Forum: PC-Programmierung Mögliche Kombinationen kodieren


von Jan (Gast)


Lesenswert?

Mehrere Variablen können verschiedene Inhalte haben, es sind aber nur 
bestimmmte Kombinationen erlaubt.
Blödes Beispiel:

Basis:  Wasser, Brühe, Pudding
Zutat1: Tee, Möhren, Mandeln

Es soll also ausgeschlossen sein, dass Brühe und Tee ausgewählt werden, 
d.h. wenn Basis = Brühe dann Zutat1 = Möhren

Muss ich alle möglichen oder unmöglichen Kombinationen ablegen, oder 
gibt es eine Art Bedingung, die jedem Element zugeordnet werden kann?

Das ganze soll dynamisch sein, also Variablenzahl und Inhalte ändern 
sich.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Alles ist möglich. Einfacher wird's wenn du uns die Programmiersprache 
verrätst und welches Regelwerk gelten soll.

von Εrnst B. (ernst)


Lesenswert?

In SQL? Such nach "Checks", "constraints", ...

Im Programmcode?
1
  my %erlaubt=(
2
    Wasser=>{Tee=>1, Möhren=>1, Mandeln=>1},
3
    Pudding=>{Mandeln=>1}
4
usw.
5
  );
6
7
8
  if (!$erlaubt{$basis}->{$zutat}) {
9
    print "Verboten!\n";
10
    $zutat=$alte_zutat;
11
  }

In der GUI?
Hier besser den Inhalt der zweiten Auswahlmöglichkeit dynamisch nach der 
ersten füllen...

von Jan (Gast)


Lesenswert?

Hi und Danke für das Interesse. Ich dachte jedoch eher an systematische 
Ansätze denn an konkreten Code.
ernsts Ansatz ist ja eine Zuordnung der erlaubten Zutaten1 für eine 
Basis.
Die Schreibarbeit wird aber schnell größer, wenn noch 'Zutaten' 
hinzukommen.
Ich dachte, es gibt evtl. noch bessere Konzepte (bin kein Informatiker)?

von Εrnst B. (ernst)


Lesenswert?

Jan schrieb:
> Ich dachte, es gibt evtl. noch bessere Konzepte

Nein, noch ist die KI-Forschung nicht so weit, das Computer selber 
abstrahieren können.

Die Speicherung lässt sich effizienter lösen, als mein Beispielcode das 
macht, aber dennoch musst du dem Rechner für jede Kombination erklären, 
obs passt oder eben nicht.

Etwas vereinfachen könnte man das durch das einfügen zusätzlicher 
Attribute oder Gruppierungen.
Also z.B. Pudding "ist eine" Süßspeise, Mandeln "passen zu" Süßspeisen.

Dann, wenn neue Sachen dazukomen:
Schokostreussel "passen zu" Süßspeisen. => Pudding akzeptiert diese 
automatisch.

Kuchen "ist eine" Süßspeise, MAndeln und Schokostreussel werden 
automatisch akzeptiert.


Wenn es aber nicht um strikte ja/nein Aussagen geht, sondern du einfach 
nur "mit großer Warscheinlichkeit" das richtige Ergebnis brauchst, und 
du auf große Trainings-Datenmengen Zugreifen kannst:

Neuronales Netz oder Bayes-Klassifikation, d.H. eine große Menge an 
Kochrezepten "lernen lassen", um anschließend neue Kochrezepte auf 
ungewöhnliche Kombinationen abzuklopfen. Da könnte dann aber

Jan schrieb:
> (bin kein Informatiker)

zum Problem werden.

von Jan (Gast)


Lesenswert?

OK, Danke.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Aber gerade Essen ist m.E. vollkommen regellos. Z.B. passt die Zuordnung 
herzhaft/süß auch nicht in irgendwelche Regeln. Es gibt Steak mit 
Pfirsich oder Mandarinen und es gibt Schokolade mit Chili.

Ein alter Programmierer-Spruch lautet: "Alles, was man beschreiben kann, 
kann man auch programmieren." Also: Auf die Beschreibung kommt es an ... 
ok, und jetzt bist du genau so schlau wie vorher.

Sorry und schönes Rest-Weihnachten. :-)

von Arc N. (arc)


Lesenswert?

> Jan schrieb:
>> Ich dachte, es gibt evtl. noch bessere Konzepte

Um die Ideen (Neuronales Netz oder Bayes-Klassifikation) mal 
aufzugreifen...
Was man hier machen könnte wäre z.B.
1
            süß     sauer   salzig  bitter   scharf ...
2
Apfel       0.4     0.6     0.0     0.0      0.0    
3
Banane      0.6     0.0     0.0     0.0      0.0    
4
Blaubeere   0.6     0.4     0.0     0.0      0.0    
5
Paprika     0.3     0.1     0.0     0.2      0.1 ...

Hat man die eindeutige Klassifizierung in z.B. Obst, Gemüse, Gewürz etc. 
kann man mit Multiclass classification (SVM mit passendem Kernel, 
logistische Regression) in einem ersten Schritt lernen vorherzusagen, zu 
welcher Klasse eine unbekannte Sache gehört (oder man clustert die Daten 
mit z.B. k-means und "schaut sich an", was was ist bzw. labeled die 
unbekannten Sachen in einem Cluster entsprechend den bekannten).
In einem zweiten Schritt lernt man dann z.B. verschiedene Zubereitungen 
und kann dann vorhersagen, ob eine bestimmte Kombination wahrscheinlich 
ist oder nicht.

Εrnst B✶ schrieb:
> Nein, noch ist die KI-Forschung nicht so weit, das Computer selber
> abstrahieren können.

hat man die o.g. Klassifizierung nicht und lässt den Computer 
"abstrahieren" -> Unüberwachtes Lernen (unsupervised learning), deep 
learning, sind die Ergebnisse mittlerweile schon sehr beeindruckend
http://www.youtube.com/watch?v=ZmNOAtZIgIk
http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

Wer sich dafür interessiert z.B.
http://jan2012.ml-class.org/
http://pgm-class.org
http://nlp-class.org

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.