Darstellung und Vereinigung unendlicher Mengen



  • Du stellst die internen Gegebenheiten des Rechners über die Problemstellung? Bist du nicht sonst eigentlich derjenige, der sich über Informatiker beschwert, die vor lauter Informatik-Wissen Probleme haben, Kundenanforderungen zu verstehen?



  • @Bashar: Gut, den Begriff 'unendliche Menge' gibt es in der Mathematik, z.B. die Mengen der natürlichen oder reellen Zahlen. Im realen Leben sind solche unendlichen Mengen jedoch eher unbekannt. Was will der Fragesteller denn programmieren? Mit unendlich vielen Elementen einer Menge kann kein Programm umgehen. Es bleibt allein eine spezielle Sache der Mathematik zur Vollständigkeit des Begriffes Menge, also eine rein theoretische Angelegenheit. Wo denn sollen bei einem Kunden unendliche Mengen tatsächlich vorkommen, noch dazu die Vereinigung solcher unendlichen Mengen? Meinen Ausflug zur Menge von Geld möge man mir gnädig verzeihen wie auch manche sonst salopp formulierten Bemerkungen von mir zu anderen Dingen hier im Forum.



  • Mit unendlich vielen Elementen einer Menge kann kein Programm umgehen.

    Doch, wenn man eine geeignete Abstraktion findet. Und darum geht es ja. Auch sind deine anderen Behauptungen wie

    Im realen Leben sind solche unendlichen Mengen jedoch eher unbekannt

    einfach nur Bullshit. Ich habe damit staendig zu tun.

    Wie modelliere ich sowas am besten, vor allem im Hinblick darauf dass es effektiv ist?

    Was willst du mit den Wertebereichen machen?

    Die zweite Frage ist, wie vergleiche ich dann zwei Wertebereiche am besten miteinander?

    Zu welchem Zweck? Normalerweise kann nicht festgestellt werden, ob zwei (unendliche) Mengen die gleichen Elemente enthaelt. Das ist ein generelles Problem der Berechenbarkeit.

    Es ist einfach zu testen, ob ein Wert in der Menge enthalten ist. Anderes beispielsweise ist schwer: ueber die Menge zu iterieren, was aber meist nicht gefordert oder unnoetig ist. Wie willst du z.B. alle reelen Zahlen ausgeben? Was ist der Nachfolger von 0.1?



  • worin besteht eigentlich das Problem?

    Intervalle stellt man durch seine zwei Grenzen dar (mit +/-inf für unbeschränkte Int.) und dann:

    $I\_1:=[a\_1,b\_1],\ I\_2:=[a\_2,b\_2]$\medskip\\ Vereinigg: $I\_1\cup I\_2=[\min(a\_1,a\_2),\ \max(b\_1,b\_2)]$\medskip\\ Schnitt: falls $\max(a\_1,a\_2)>\min(b\_1,b\_2)\Rightarrow\emptyset$\medskip\\ sonst: $I\_1\cap I\_2=[\max(a\_1,a\_2),\min(b\_1,b\_2)]$

    Mengen-Darstellung in aufzählender Schreibweise dürfte sich bei 64-Bit-Zahlen wohl verbieten, es sei denn mit seeeeeeehr viel RAM 😃



  • knivil schrieb:

    Was ist der Nachfolger von 0.1?

    Und mit dieser Frage sind wir dann wieder beim Thema angelangt! Reelle Zahlen sind unendlich und nicht in einzelnen konkreten Elementen - sondern nur in Wertebereichen - darstellbar und auch diese bleiben notwendig in der Anzahl und der Grösse begrenzt. Zwischen 0.1 und 0.2 liegt wieder eine unendliche Menge reeller Zahlen vor. Einen Nachfolger von 0.1 gibt es nicht! Ingenieure kennen und verwenden für diese Zwecke einen Zuverlässigkeitswert eps = 1.e-xx z.B bei Iterationen.



  • !rr!rr_. schrieb:

    worin besteht eigentlich das Problem?

    Intervalle stellt man durch seine zwei Grenzen dar (mit +/-inf für unbeschränkte Int.) und dann:

    $I\_1:=[a\_1,b\_1],\ I\_2:=[a\_2,b\_2]$\medskip\\ Vereinigg: $I\_1\cup I\_2=[\min(a\_1,a\_2),\ \max(b\_1,b\_2)]$

    Klappt nicht, wenn I_1 und I_2 sich nicht berühren oder überschneiden.

    Schnitt: falls $\max(a\_1,a\_2)>\min(b\_1,b\_2)\Rightarrow\emptyset$\medskip\\ sonst: $I\_1\cap I\_2=[\max(a\_1,a\_2),\min(b\_1,b\_2)]$

    Betrachte [0,1) ,(1,2]. Damit siehst du das allgemeinere Problem, dass du unterscheiden musst, ob die Grenzen im Intervall enthalten sind oder nicht. Gerade hier hast du auch Schwierigkeiten mit den Fließkommaeigenschaften, wenn die Grenzen irgendwie berechnet wurden.



  • Michael E. schrieb:

    Klappt nicht, wenn I_1 und I_2 sich nicht berühren oder überschneiden.

    ?? Dann ist der Schnitt aber kein Intervall, sodaß er mit einer Datenstruktur für Intervalle ohnehin nicht auskommt.

    Michael E. schrieb:

    Betrachte [0,1) ,(1,2]. Damit siehst du das allgemeinere Problem, dass du unterscheiden musst, ob die Grenzen im Intervall enthalten sind oder nicht.

    Fallunterscheidung, na und ?



  • !rr!rr_. schrieb:

    ?? Dann ist der Schnitt aber kein Intervall, sodaß er mit einer Datenstruktur für Intervalle ohnehin nicht auskommt.

    meinte "Vereinigung", nicht "Schnitt"



  • Ok, danke soweit für den Input.

    Letztlich muss ich es so hinkriegen, das ich mir nur die Intervall-Grenzen merke und diese dann miteinander vergleiche.

    Der große Rahmen des ganzen ist, dass ich eine Anfrage habe und ein Angebot dazu, und ich muss prüfen ob diese beiden zueinander kompatibel sind. Das aber nur am Rande 🙂

    Das mit den unendlichen Wertebereichen ist tatsächlich eher ein theoretischs Problem - aber das Programm sollte in der Lage sein, auch das zu handlen. Jedenfalls ist das die Vorgabe.



  • !rr!rr_. schrieb:

    Michael E. schrieb:

    Klappt nicht, wenn I_1 und I_2 sich nicht berühren oder überschneiden.

    ?? Dann ist der Schnitt aber kein Intervall, sodaß er mit einer Datenstruktur für Intervalle ohnehin nicht auskommt.

    Richtig, er braucht eine Menge von Intervallen. Die braucht er aber sowieso.

    Michael E. schrieb:

    Betrachte [0,1) ,(1,2]. Damit siehst du das allgemeinere Problem, dass du unterscheiden musst, ob die Grenzen im Intervall enthalten sind oder nicht.

    Fallunterscheidung, na und ?

    Nichts anderes hab ich gesagt.



  • Es reicht für mein Problem übrigens das ich weiß, ob der Schnitt leer oder nicht leer ist - deshalb ist es auch nicht so wichtig, ob ich nach einer Vereinigung/Schnittmenge die richtigen Intervalle bekomme. Deshalb ist der obige Vorschlag eigentlich schon ganz brauchbar - und sehr effizient! 🙂



  • berniebutt schrieb:

    @Bashar: Gut, den Begriff 'unendliche Menge' gibt es in der Mathematik, z.B. die Mengen der natürlichen oder reellen Zahlen. Im realen Leben sind solche unendlichen Mengen jedoch eher unbekannt.

    Das spielt keine Rolle, ein Programm blickt auf das reale Leben immer durch die Brille eines Modells. Wenn du deine Kaninchenzüchtersoftware anschaust, hast du da sicher irgendwo sowas wie einen Gewichtsbereich, z.B. "zwischen 1 und 2 Kilo". Das ist mathematisch eine unendliche Menge von Zahlen. Praktisch könntest du natürlich sagen, dass du nur auf Gramm genau misst. Trotzdem würdest du mit einem Objekt, dass die Aussage "zwischen 1 und 2 kg" verkörpert, arbeiten, und nicht alle Zahlen von 1,0 bis 1,999 in ein set knallen. Schon allein aus Performance und Wartbarkeitsgründen. Es hätte zusätzlich den Nachteil, dass du beim Durchschnitt von 2 Kaninchen eventuell eine "ungerade" Zahl, z.B. 1,5005, bekommst, die dann gar nicht mehr in der Menge ist. Du müsstest also runden usw. Wozu diese Komplexität?

    Was will der Fragesteller denn programmieren? Mit unendlich vielen Elementen einer Menge kann kein Programm umgehen.

    Na und, aber es kann mit der Menge umgehen, das reicht doch.


Anmelden zum Antworten