Dateiformat für 08/09 grid.xsd

Moderator: Praktikum: Algorithmen

EisNerd
Mausschubser
Mausschubser
Beiträge: 53
Registriert: 18. Nov 2005 19:54
Wohnort: Heppenheim

Dateiformat für 08/09 grid.xsd

Beitrag von EisNerd » 28. Okt 2008 17:09

Ok, also in kurz wir wollen mal nen XML Schema basteln.
Die erste Idee steht im Aufgaben-Thread.
Erste Verbesserung die Segmente müssen überhaupt nicht modelliert werden, da die Wege (/ möglichen Wege) der Netze sich nur an den genutzten Transit-Terminals festmachen lässt, da ein Terminal nicht von zwei Netzen genutzt werden darf.

Ich poste hier dann die Angepasste Version des xsd.

Bitte JETZT diskutieren, da wir uns auf ein Format festlegen wollten um den Austausch zu erleichtern.
... und morgen gehts weiter.

Benutzeravatar
Maradatscha
Computerversteher
Computerversteher
Beiträge: 353
Registriert: 2. Okt 2006 18:53

Re: Dateiformat für 08/09 grid.xsd

Beitrag von Maradatscha » 28. Okt 2008 17:40

Eine grundlegende Sache:
Unsere Datei muss nur die Lösung des Algorithmus anzeigen können, nicht wie der Algorithmus abläuft. Wir brauchen also nur die Knoten zu speichern die in dem Baum liegen, der benutzt wird.

Ich bin eigentlich auch eher für die einfachste Lösung -> Kein XML einfach nur eine Textdatei, kann jeder wirklich ohne Probleme auslesen und schreiben und dann eben die Infos darein packen, wo er sie braucht.
angelehnt, an das was Patrik schon geschrieben hat, mein Vorschlag:

breite;hoehe;tiefe
[Menge1]
x;y;z
x;y;z
x;y;z
...
[Menge2]
x;y;z
...
[MengeN]
x;y;z
...
[Menge1Loesung]
x;y;z
...
[Menge2Loesung]
x;y;z
...
[MengeNLoesung]
x;y;z
...

m_gaber
Windoof-User
Windoof-User
Beiträge: 39
Registriert: 26. Okt 2004 15:09

Re: Dateiformat für 08/09 grid.xsd

Beitrag von m_gaber » 28. Okt 2008 17:48

naja, das parsing macht man sich mit XML deutlich einfacher und lesbarer wirds auch als so etwas:

Code: Alles auswählen

409832;1;34209
2;190;742389
5987320;472389;210938
gespeichert werden ja auch in em XML vorschlag nur die genutzen terminals:

Topelement: grid, existiert genau ein mal, besitzt 3 attribute die die größe angeben sowie ein optionales für die kosten (lösung)
besteht aus n Netzen, diese haben 2 optionale Attribute, nämlich die Kosten und einen Namen.
Sie bestehen aus 1 Source (3 koordinaten), n Sinks (3 koordinaten) und 0-m Zwischenstücken (optinal mit 3 koordinaten zu modellierung der Lösung).

finde ich klingt problemlos implementierbar

patrik_s.stud.tu
Mausschubser
Mausschubser
Beiträge: 69
Registriert: 12. Okt 2006 20:56

Re: Dateiformat für 08/09 grid.xsd

Beitrag von patrik_s.stud.tu » 28. Okt 2008 18:09

ebenso vote wie maradatscha fuers einfache format...
von mir aus auch serialisierung... dann muesste eine superklasse her mit den werten fuer serialisieren

Benutzeravatar
Maradatscha
Computerversteher
Computerversteher
Beiträge: 353
Registriert: 2. Okt 2006 18:53

Re: Dateiformat für 08/09 grid.xsd

Beitrag von Maradatscha » 28. Okt 2008 18:33

m_gaber hat geschrieben:naja, das parsing macht man sich mit XML deutlich einfacher und lesbarer wirds auch als so etwas:

Code: Alles auswählen

409832;1;34209
2;190;742389
5987320;472389;210938
gespeichert werden ja auch in em XML vorschlag nur die genutzen terminals:

Topelement: grid, existiert genau ein mal, besitzt 3 attribute die die größe angeben sowie ein optionales für die kosten (lösung)
besteht aus n Netzen, diese haben 2 optionale Attribute, nämlich die Kosten und einen Namen.
Sie bestehen aus 1 Source (3 koordinaten), n Sinks (3 koordinaten) und 0-m Zwischenstücken (optinal mit 3 koordinaten zu modellierung der Lösung).

finde ich klingt problemlos implementierbar
sobald du grids hast die grösser sind als 20x20x20 verliert man eh den überblick.
Ich kann mich auch mit XML anfreunden, aber die Kosten überhaupt speichern zu wollen macht keinen Sinn, da die implizit sowieso schon in der gespeicherten lösung mit drin Stecken.
Deine Lösung angepasst so wie ich sie mir vorstelle:



Topelement: grid, existiert genau ein mal, besitzt 3 attribute die die größe angeben
besteht aus n Netzen
Sie bestehen aus 1 Source (3 koordinaten), n Sinks (3 koordinaten) und optional (das ist dann die Lösung!) 0-m Zwischenknoten (3 koordinaten)

EisNerd
Mausschubser
Mausschubser
Beiträge: 53
Registriert: 18. Nov 2005 19:54
Wohnort: Heppenheim

Re: Dateiformat für 08/09 grid.xsd

Beitrag von EisNerd » 28. Okt 2008 19:29

Leute ganz ehrlich! JAXB + .xsd => Datenstruktur + Parser + Writer geschenkt!
http://java.sun.com/developer/technical ... ices/jaxb/

Beispiel für Parser/Writer:
http://java.sun.com/developer/technical ... Test3.java

Und in der Vorbesprechung wurde einhellig für xml votiert, da Parser und ko bei Java mitgeliefert werden.
Das XML-Schema ist alles was man braucht und das wollen wir hier zur Verfügung stellen.
==> Weniger Arbeit, gut lesbare und tauschbare Dateien, ein Dateiformat für gelöste/ungelöste Probleme.

So und hier noch das Zitat aus dem Aufgaben-Thread:
Aber wie oben bereits geschrieben, sind hier noch die Segmente modelliert, was unserer Ansicht nach nicht benötigt wird.
EisNerd hat geschrieben:So geht das direkt durch xjc-2:

Code: Alles auswählen

xjc-2 -p de.tudarmstadt.informatik.algo.netmapping xml/grid.xsd -d src/
parsing a schema...
compiling a schema...
de/tudarmstadt/informatik/algo/netmapping/Direction.java
de/tudarmstadt/informatik/algo/netmapping/Grid.java
de/tudarmstadt/informatik/algo/netmapping/Net.java
de/tudarmstadt/informatik/algo/netmapping/ObjectFactory.java
de/tudarmstadt/informatik/algo/netmapping/Segment.java
de/tudarmstadt/informatik/algo/netmapping/Terminal.java
de/tudarmstadt/informatik/algo/netmapping/package-info.java
Hier das korrigierte Schema

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns="http://algo.informatik.tu-darmstadt.de"
  targetNamespace="http://algo.informatik.tu-darmstadt.de">

  <xsd:element name="grid">
    <xsd:complexType>
      <xsd:sequence>
	<xsd:element name="net" type="net" minOccurs="1" maxOccurs="unbounded"/>
      </xsd:sequence>
      <xsd:attribute name="size_x" type="xsd:int" use="required"/>
      <xsd:attribute name="size_y" type="xsd:int" use="required"/>
      <xsd:attribute name="size_z" type="xsd:int" use="required"/>
      <xsd:attribute name="cost" type="xsd:int" use="optional"/>
    </xsd:complexType>
  </xsd:element>
  
  <xsd:complexType name="net">
    <xsd:sequence>
      <xsd:element name="source" type="terminal" minOccurs="1" maxOccurs="1"/>
      <xsd:element name="sink" type="terminal" minOccurs="1" maxOccurs="unbounded"/>
      <xsd:element name="segment" type="segment" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="cost" type="xsd:int" use="optional"/>
  </xsd:complexType>
  
  <xsd:complexType name="terminal">
    <xsd:attribute name="pos_x" type="xsd:int" use="required"/>
    <xsd:attribute name="pos_y" type="xsd:int" use="required"/>
    <xsd:attribute name="pos_z" type="xsd:int" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="segment">
    <xsd:attribute name="pos_x" type="xsd:int" use="required"/>
    <xsd:attribute name="pos_y" type="xsd:int" use="required"/>
    <xsd:attribute name="pos_z" type="xsd:int" use="required"/>
    <xsd:attribute name="orientation" type="direction" use="required"/>
  </xsd:complexType>
  
  <xsd:simpleType name="direction">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="x"/>
      <xsd:enumeration value="y"/>
      <xsd:enumeration value="z"/>
    </xsd:restriction>
  </xsd:simpleType>
  
</xsd:schema>
... und morgen gehts weiter.

m_gaber
Windoof-User
Windoof-User
Beiträge: 39
Registriert: 26. Okt 2004 15:09

Re: Dateiformat für 08/09 grid.xsd

Beitrag von m_gaber » 29. Okt 2008 15:46

Maradatscha hat geschrieben: sobald du grids hast die grösser sind als 20x20x20 verliert man eh den überblick.
Ich kann mich auch mit XML anfreunden, aber die Kosten überhaupt speichern zu wollen macht keinen Sinn, da die implizit sowieso schon in der gespeicherten lösung mit drin Stecken.
naja, es ist aber schon etwas aufwand die Kosten aus den netzen wieder zu extrahieren, und da man das bei der bearbeitung der Aufgabe eh im netz zwischenspeichern wird kann man das auch angeben. Das attribut ist ja eh optional, wer er also nicht ausfüllen will kann es auch lassen ^^
Maradatscha hat geschrieben: Deine Lösung angepasst so wie ich sie mir vorstelle:
Topelement: grid, existiert genau ein mal, besitzt 3 attribute die die größe angeben
besteht aus n Netzen
Sie bestehen aus 1 Source (3 koordinaten), n Sinks (3 koordinaten) und optional (das ist dann die Lösung!) 0-m Zwischenknoten (3 koordinaten)
Verrätst du mir warum du das optionale namens-element von den Netzen gestrichen hast? das macht es bei diskussionen oder Anzeigen identifizierbar, und wers nicht mag kanns ja wie gesagt weglassen.

Gruß Michael

EisNerd
Mausschubser
Mausschubser
Beiträge: 53
Registriert: 18. Nov 2005 19:54
Wohnort: Heppenheim

Re: Dateiformat für 08/09 grid.xsd

Beitrag von EisNerd » 29. Okt 2008 20:10

Ok, in kurz, mein grid writer für xml funktioniert 64 Zeilen in der einzigen Datei.
Noch fragen?
... und morgen gehts weiter.

Benutzeravatar
Maradatscha
Computerversteher
Computerversteher
Beiträge: 353
Registriert: 2. Okt 2006 18:53

Re: Dateiformat für 08/09 grid.xsd

Beitrag von Maradatscha » 29. Okt 2008 20:13

ich streiche sowas weil ich denke, dass es unnötig ist.
Aber da es optional ist, ist das wohl in XML vollkommen egal, kann ruhig drin bleiben
ich denke immer noch in normalen Files... sorry
mit
Sie bestehen aus 1 Source (3 koordinaten), n Sinks (3 koordinaten) und 0-m Zwischenstücken (optinal mit 3 koordinaten zu modellierung der Lösung).
meinst du aber auch , dass die zwischenstücke optional sind oder?

m_gaber
Windoof-User
Windoof-User
Beiträge: 39
Registriert: 26. Okt 2004 15:09

Re: Dateiformat für 08/09 grid.xsd

Beitrag von m_gaber » 29. Okt 2008 21:16

Maradatscha hat geschrieben:ich streiche sowas weil ich denke, dass es unnötig ist.
Aber da es optional ist, ist das wohl in XML vollkommen egal, kann ruhig drin bleiben
ich denke immer noch in normalen Files... sorry
mit
Sie bestehen aus 1 Source (3 koordinaten), n Sinks (3 koordinaten) und 0-m Zwischenstücken (optinal mit 3 koordinaten zu modellierung der Lösung).
meinst du aber auch , dass die zwischenstücke optional sind oder?
jo optionale attribute kann man (wie z.B. bei html auch) weglassen schreibt sie also nur wenn man denkt dass man etwas von hat.
und: ja auch die zwischenstücke sind optional, sind einfach terminals mit 3 koordinaten.

EisNerd
Mausschubser
Mausschubser
Beiträge: 53
Registriert: 18. Nov 2005 19:54
Wohnort: Heppenheim

Re: Dateiformat für 08/09 grid.xsd

Beitrag von EisNerd » 30. Okt 2008 12:15

Ok, also Parser und Writer haben wir fertig,

das ergebniss sieht dann so aus:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>          
<ns2:grid xmlns:ns2="http://algo.informatik.tu-darmstadt.de" size_z="10" size_y="10" size_x="10" cost="2147483647">                                             
    <net name="Net: 2">                                                         
        <source pos_z="5" pos_y="6" pos_x="5"/>                                 
        <sink pos_z="8" pos_y="3" pos_x="3"/>                                   
        <sink pos_z="5" pos_y="8" pos_x="3"/>                                   
        <sink pos_z="5" pos_y="0" pos_x="3"/>
        <sink pos_z="0" pos_y="5" pos_x="5"/>
        <sink pos_z="1" pos_y="2" pos_x="4"/>
    </net>
    <net name="Net: 1">
        <source pos_z="5" pos_y="8" pos_x="6"/>
        <sink pos_z="3" pos_y="5" pos_x="8"/>
        <sink pos_z="6" pos_y="0" pos_x="2"/>
        <sink pos_z="9" pos_y="0" pos_x="3"/>
        <sink pos_z="7" pos_y="5" pos_x="2"/>
        <sink pos_z="9" pos_y="7" pos_x="2"/>
    </net>
    <net name="Net: 0">
        <source pos_z="4" pos_y="7" pos_x="3"/>
        <sink pos_z="5" pos_y="9" pos_x="6"/>
        <sink pos_z="7" pos_y="5" pos_x="1"/>
        <sink pos_z="7" pos_y="5" pos_x="3"/>
        <sink pos_z="2" pos_y="2" pos_x="7"/>
        <sink pos_z="2" pos_y="4" pos_x="0"/>
    </net>
</ns2:grid>
Der Parser und der Writer lassen sich ziemlich direkt aus der Doku zu der ich den Link oben gepostet habe abschreiben (das Beispiel splitten und anpassen).
Also wenn nichts dagegen spricht würde ich gerne dann das xsd überarbeiten (segmente rauswerfen) und das dann als Grundlage für gemeinsame Beispiele nehmen, das xsd pass ich dann an und poste es hier. JAXB doku und jars gibs bei SUN (siehe links hier im thread).
... und morgen gehts weiter.

Prof. Karsten Weihe
Dozentin/Dozent
Beiträge: 1824
Registriert: 21. Feb 2005 16:33

Re: Dateiformat für 08/09 grid.xsd

Beitrag von Prof. Karsten Weihe » 3. Nov 2008 17:18

Hallo allerseits,

mir scheint, die Diskussion konvergiert. Gibt es gegen den bisher erreichten Konvergenzpunkt erhebliche Bedenken? Sonst frieren wir die Diskussion an diesem Punkt ein.

Gruß,

KW

Benutzeravatar
MisterD123
Geek
Geek
Beiträge: 811
Registriert: 31. Okt 2006 20:04
Wohnort: Weiterstadt

Re: Dateiformat für 08/09 grid.xsd

Beitrag von MisterD123 » 3. Nov 2008 17:59

ein starker kritikpunkt ist, dass bei größeren knotenmengen eine speicherung mit all dem XML overhead und ohne komprimierung zu gigantischen dateien führen wird was beim verteilen von problemstellungen/-lösungen vielleicht etwas unangenehm wird.

EisNerd
Mausschubser
Mausschubser
Beiträge: 53
Registriert: 18. Nov 2005 19:54
Wohnort: Heppenheim

Re: Dateiformat für 08/09 grid.xsd

Beitrag von EisNerd » 3. Nov 2008 18:49

MisterD123 hat geschrieben:ein starker kritikpunkt ist, dass bei größeren knotenmengen eine speicherung mit all dem XML overhead und ohne komprimierung zu gigantischen dateien führen wird was beim verteilen von problemstellungen/-lösungen vielleicht etwas unangenehm wird.
wir speichern nur die wirklich benötigten infos, also ist das xml höchstens ein linearer faktor.
... und morgen gehts weiter.

Benutzeravatar
Maradatscha
Computerversteher
Computerversteher
Beiträge: 353
Registriert: 2. Okt 2006 18:53

Re: Dateiformat für 08/09 grid.xsd

Beitrag von Maradatscha » 3. Nov 2008 20:28

trotzdem stimmt es schon dass sowas hier:

Code: Alles auswählen

<source pos_z="5" pos_y="9" pos_x="6"/>
deutlich mehr Speicherplatz verbaucht als

Code: Alles auswählen

5;9;6
wenn man implizit weiss, dass der erste knoten eines Netzes die source ist.
Ich möchte damit nicht gegen XML sprechen, möchte nur das Problem aufzeigen.

Antworten

Zurück zu „Praktikum: Algorithmen“