Frage

Eine lange Weile her, ich entwickelte Systeme mit Egeria eines Expertensystems Sprache. Es hatte eine wirklich nützliche Funktion, wo Variablen drei Werte hatten, eine Min-, Max- und Strom. Auf diese Weise könnte die Wahrscheinlichkeit eines teilweise bekannten Wert berechnet, wobei die Ergebnisse als Bereich enden. Ich kann nicht die Syntax erinnern, aber es war so etwas wie folgt aus: -

A.Min = 1;
A.Max = 5;
A.Current= 4;
B.Min = 2;
B.Max = 4;
B.Current= 4;


A * B = {2, 20, 16}

Meine Frage ist, was dieser Ansatz genannt ist, und tun es alle aktuellen Sprachen implementieren?

War es hilfreich?

Lösung

Multi-wertigen Variablen wie die, die Sie beschreiben, kann in Constraint-basierte Programmierung verwendet werden. Für ein aktuelles Papier sieht Radul und Sussman, "The Art of die Verbreiter ".

Mr. Radul präsentiert auf ILC 2009 letzte Woche. Er gab ein Beispiel (was man berücksichtigt) mehrwertige Variablen, die eine probabilistische Annäherung an „Wahrheit“ darstellen. (Ich entschuldige mich für jede falsche Darstellung im Voraus, ich habe keine Noten haben.)

Betrachten wir ein System, das Messwerte von zwei thermischen Sensoren miteinander vereinbaren müssen. Nehmen wir weiter an, dass jeder Sensor Lesungen kommen mit einer gewissen Unsicherheit: Sensor A sagt die Temperatur liegt zwischen A1 und A2, Sensor B sagt Temperatur zwischen B1 und B2 ist. Sollte das System bei dem Versuch scheitern, die Temperatur zu berechnen? Vielleicht ist die „Wahrheit“ in Bezug auf den Bereich ausgedrückt werden, wobei die Messwerte überlappen.

Andere Tipps

Es klingt wie, als „Ansatz“, kann es eine Art von Fuzzy-Logik . Vor allem, wenn Sie beschreiben es probabilistically verwendet wird.

Anhang C der ursprünglichen Papier auf Yacc (in Band 2 des Handbuchs des UNIX-Programmierer für Version 7, wird das Papier 1978.07.31 datiert) beschrieben einen ‚Schreibtisch-Rechner, der Punkt Intervallarithmetik nicht schwebenden‘. Es verwendet Intervalle mit der Notation ‚(min, max)‘ und implementiert bereichsbasierte Arithmetik. Was Sie beschreiben, ist eine Erweiterung, dass mit dem ‚aktuellen‘ Wert zu.

Die meisten objektorientierten Sprachen dies tun könnte ziemlich leicht Klassen verwenden.

In C ++, insbesondere wäre es sehr einfach sein, eine Templat-Klasse zu machen, die diese für jeden Basistyp für Sie behandelten, zum Beispiel.

Ich weiß nicht, von irgendwelchen Sprachen, die diese als Teil der Kernsprache unterstützen, though.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top