Sylvestersche Siebformel/Berechnen der Teilmengen

Neue Frage »

Hm... Auf diesen Beitrag antworten »
RE: Silvestersche Siebformel/ Berechnen der Teilmengen
Hi Leute,

ich versuche gerade die Silvestersche Siebformel zu implementieren, schaffe es aber nicht einen passenden Algo. für folgendes problem zusammen zu basteln:

gegeben: Eine Menge M von Ereignissen und eine natürliche Zahl k
Gesucht: Alle Teilmengen N von M mit |N|=k



habt ihr eine idee?

Zwei Beiträge zusammengeführt. Steffen

eigendlich suche ich direkt ne idee wie man die silvestersche siebformel implementieren könnte ohne das es viel laufzeit verbraucht...


meine idee wäre:

M={p1,p2,....,pk}

k=1: trivial

k=2: p1*p2, ..., p1*pk, p2*p3, ..., p2*pk, ... , p(k-1)*pk

k=3: wie k=2 nur das immer der letzte indize verschoeben wird


aber das sieht schon so nach hoherlaufzeit aus ^^


meine grundlegende methode wäre:


private static Double silvesterscheSiebformel(Double[] probilitys)
{
Double p=0.0;

for(int k=1;k<=probilitys.length;k++)
{
Double z = (k % 2 == 0 ? -1.0 : 1.0);
Double n = 0.0;

ArrayList<Double> kombis = getKombisNew(probilitys,k);
for(int i=0; i<kombis.size(); i++)
{
n += kombis.get(i);

}
p += z * n;
}

return p;
}



in getKombisNew berechne ich die entsprechenden produkte (was derzeit nicht funktioniert)....
HAL 9000 Auf diesen Beitrag antworten »

Zitat:
Original von Hm...
gegeben: Eine Menge M von Ereignissen und eine natürliche Zahl k
Gesucht: Alle Teilmengen N von M mit |N|=k

Hier sprichst du davon, dass du Teilmengen suchst - später dann berechnest du aber irgendwelche Wahrscheinlichkeiten? Reichlich verworren. verwirrt

In dieser Form passt das eben überhaupt nicht zu dem, was du im folgenden dann ausführst. Ich versuche mal zu "übersetzen", was du allem Anschein nach wirklich willst:

Zitat:
Du hast eine Menge von unabhängigen (!) Ereignissen , deren Wahrscheinlichkeiten du kennst.

Du suchst nun die Wahrscheinlichkeit von deren Vereinigung, also .

Die Siebformel ist das richtige Mittel für dieses Problem, wenn die Wahrscheinlichkeit aller möglichen Durchschnitte der bekannt bzw. leicht berechenbar ist - soweit hast du Recht, und damit könnte man die hier auch theoretisch gut anwenden.

Allerdings ist die Siebformelanwendung hier der reinste Berechnungsoverkill, da es ja auch wesentlich einfacher geht:

Bei deinen Voraussetzungen sind ja auch die Gegenereignisse unabhängig, es folgt sofort

.

------------------------------

Eine andere Vermutung wäre noch diese - die liegt näher an deiner oben zitierten Problemstellung, ist aber in deinem Programm-Quelltext gar nicht mehr erkennbar:

Zitat:
Du hast eine Menge von unabhängigen Grundereignissen , deren Wahrscheinlichkeiten du kennst.
Und du suchst nun die Wahrscheinlichkeit des Ereignisses, dass genau der Grundereignisse erfüllt sind.

Das haben wir vor nicht allzu langer Zeit hier diskutiert

Wahrscheinlichkeit auf n Erfolge bei unterschiedlichen Wahrscheinlichkeiten

ebenfalls völlig ohne Siebformel. Nicht dass ich was gegen diese Formel habe (frag mal Mystic Augenzwinkern ), aber nicht überall ist es sinnvoll und effizient, auf sie zu bauen. smile
Hm... Auf diesen Beitrag antworten »

danke, das funktioniert!






ich habs vorher mit den bonferoni ungleichungen versucht (aber die sind ganz schöner mist!):

private static Double bonferroniUngleichungen(Double[] probilitys)
{
Double p = 0.0;
Double overbound = 0.0;
Double underbound = 0.0;

for(int i=0; i<probilitys.length; i++)
{
overbound += probilitys[i];
//underbound += probilitys[i];
for(int j=0; j<i; j++)
underbound -= ( probilitys[i] + probilitys[j] - probilitys[i] * probilitys[j]);
}
System.out.println("obere schranke: "+ overbound + " untereschranke: "+ (overbound + underbound));
p = Math.abs(2*overbound + underbound) / 2;
return p;
}



die liefern für die eingabe {0.5,0.5,0.5} ein intervall von [1.5,-0.75] Hammer
HAL 9000 Auf diesen Beitrag antworten »

Ich hatte eigentlich erwartet, dass du mal Licht in das Chaos deiner Problemstellung bringst, d.h. verständlich äußerst, was deine wirkliche Problemstellung ist (ich hab ja zwei zur Wahl gestellt, aber es ist ja vielleicht eine ganz andere). Das sollte doch bei dieser anscheinend doch ziemlich übersichtlichen Situation möglich sein - ist es zuviel verlangt, das zu erfahren? unglücklich
Hm... Auf diesen Beitrag antworten »

achso, dass hatte ich überlesen, sorry smile

mein problem war jenes, welches du zuerst vorgestellt hast.



konkret:

Gegeben waren verschiedene wahrscheinlichkeiten ,

und gesucht war die wahrscheinlichkeit, dass dieser kunde mindestens einmal im zeitraum t=1,...,n in das geschäft geht

wobei die wahrscheinlichkeit dafür ist, dass ein vorherfestgeleter kunde an einem Tag i in ein geschäft geht. diese habe ich über einen markovgraphen berechnet (was ziemlich aufwendig war)
HAL 9000 Auf diesen Beitrag antworten »

Dann also doch das einfache Problem ... Ok.


Zitat:
Original von Hm...
wobei die wahrscheinlichkeit dafür ist, dass ein vorherfestgeleter kunde an einem Tag i in ein geschäft geht. diese habe ich über einen markovgraphen berechnet

Ein leichtes Stirnrunzeln befällt mich bei dieser Beschreibung (speziell dem Verweis auf "Markovgraph") dann doch: Sobald es irgendwelche Abhängigkeiten zwischen den zugehörigen Ereignissen

... Kunde betritt an Tag das Geschäft

gibt, ist die obige Formel null und nichtig, das ist dir hoffentlich in aller Deutlichkeit bewusst!
 
 
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »