Frage zum Artikel-Forum (Rechte am Code)



  • Sind die Programme in den Artikel-Beiträgen zur freien Verfügung gestellt?

    Ich würde gerne den AVL-Baum in meine Diplomarbeit einbinden, daher frage ich vorsichtshalber mal nach. Oder sollte ich direkt beim Autor anfragen?

    Oder einfach nehmen, weils eh keiner merkt (ausser meinem Betreuer) 🙄

    Danke



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Allgemeines zum Magazin verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Wenn du sowas produktiv einsetzen willst, solltest du lieber die jeweiligen Autoren fragen (wobei das meiste hier auch nur die Umsetzung älterer Entwürfe ist - den AVL-Baum hat Ben (afaik) nicht erfunden, sondern "nur" verständlich beschrieben).

    PS: Aber da du von Diplomarbeit redest - da solltest du schon erwähnen, woher du deine Lösungsideen hast (zumindest in einer Fußnote und dem Literaturverzeichnis).



  • Als Literaturquelle wird der Autor sicherlich genannt. Mir ist auch klar, dass der AVL-Baum wohl keinem hier als Erfinder zuzuordnen ist 😃 Ich brauchte lediglich eine Implementierung des Bäumchens.



  • Öhmm, wie kann man denn hier mit Ben04 Kontakt aufnehmen 🙄



  • Der Code der ist von mir geschrieben und auch die Beweise stammen von mir auch wenn die Grundidee von dem Link stammt der ich im Artikel angegeben habe. Für den ersten Teil hab ich keine Referenzen angegeben da ich dafür nichts nachgeschlagen hatte. (Und ich es für unsinnig halte in Artikeln die nicht benotet werden Referenzen zu suchen nur um welche zu haben.)

    Wer die Erfinder der Datenstruktur sind steht auch im Artikel. Ich würde empfehlen mal nach zu schlagen wie deren Literaturwerk heißt und das als Quelle angeben. (Auch wenn du es gar nicht gelesen hast.)

    Einfach so den Text übernehmen würde ich dir nicht raten auch wenn es von mir aus ok solange die Quelle angegeben wird. (Mein richtiger Name Ben Strasser und idealerweise einen Link zum Artikel.)

    Oder einfach nehmen, weils eh keiner merkt (ausser meinem Betreuer)

    Google hat den Artikel bereits gescannt. Such mal nach "In folgendem Artikel werde ich nur auf die Besonderheiten eines AVL-Baums gegenüber eines einfachen Suchbaums eingehen." dem ersten Satz des Artikels. Google findet ihn. Wenn also wer die Quelle finden will, er findet sie.

    Öhmm, wie kann man denn hier mit Ben04 Kontakt aufnehmen

    Falls noch etwas ist kannst du entweder hier noch posten oder eine Mail an de.freenet@ben04_01 schicken. (Ja die E-Mail ist von hinten nach vorne.) Es kann zwar ne Zeit dauern ehe ich antworte. Im Moment bin ich hier etwas beschäftigt.

    PS: Du bist dir schon bewusst, dass der Autor des Artikel Ersti ist und zum Zeitpunkt des Schreibens noch nicht einmal Abitur hatte? (Will das nur erwähnen da wenn wer wirklich etwas zu meiner Person nachsuchen würde würde er das wahrscheinlich finden.)



  • @crashterpiece:
    Imho eignet sich sowas nicht wirklich um es in einer wissenschaftlichen Arbeit zu zitieren. Aber irgendwie kommt auch nicht so klar raus, was Du genau brauchst? Irgendeinen balancierenden Baum? Da würde ich doch glatt std::map bzw. std::set empfehlen. Warum muß es unbedingt ein AVL-Baum sein? Für die Komplexität ist das doch egal, ob Red-Black oder AVL.

    Wenn Du hingegen eher an theoretischen Eigenschaften interessiert bist solltest Du eher eine Veröffentlichung zum Thema AVL-Bäume zitieren. Beispielsweise das Originalpaper oder irgendein survey-paper zu suchbäumen oä.



  • ...irgendwo auf eurer startseite steht sowas wie (glaube ich) 'alle rechte an den postings gehen auf den foreninhaber über bzw. die texte und programmfragmente sind public domain' oder so ähnlich.
    🙂



  • Ich brauchte nur die Implementierung. Die Idee hinter AVL-Bäumen war mir schon vorher bekannt, ich wollte nur nicht selbst eine aufwendige (und fehleranfällige) Implementierung durchführen. Und auf die Schnelle hab ich keine weiteren Bibliotheken gefunden.

    AVL-Bäume solltens schon sein, da nur diese mir die konstanten Suchtiefen garantieren für meinen Anwendungsfall(*). Vorher hab ich eine Liste benutzt, und die haut mir dann lineare Zeiten um die Ohren. Das konnte ich nicht gebrauchen, da ich (leider) eine effektive Datenstruktur brauchte. Beweise sind uninteressant und der Stoff wird ohnehin voraus gesetzt.Für die Theorie kann ich durchaus andere Quellen zitieren (eben diese Herren A, V und L wenns sein muss).

    (*) Bestimmen von Segmentschnittpunkten in der Ebene durch Plane-Sweep. Der Baum dient dabei als Puffer der "aktivierten" Segmente und muss logarithmische Suchzeiten garantieren.



  • std::map garantiert auch logarithmische Zeit beim Suchen.



  • crashterpiece schrieb:

    Für die Theorie kann ich durchaus andere Quellen zitieren (eben diese Herren A, V und L wenns sein muss).

    Ne schöne Alternative dazu ist auch "Introduction to Algorithms" Cormen, Leisersen, und noch zwei 😉

    und für die Implementierung würde ich dann wirklich auf std::map zurückgreifen. Kann gut sein, dass die sogar schneller sind als AVL-Bäume, da sie nicht so viel Zeit aufwenden um sich vollständig zu balancieren, sondern eben nur halbwegs balanciert sind (hat aber trotzdem noch O(log n) Zeit für Finden/Löschen/Einfügen).



  • Mit dem klitzekleinen Unterschied, dass ich bei einer Map(*) nach erfolgloser Suchen nach einer Einfuegestelle einen Pointer auf end() bekomme. In einem Baum bekomme ich die korrekte Einfuegestelle und kann diese direkt verwenden.

    Naja, ich kanns ja mal mit einer (Q)Map testen, prinzipiell ändert sich nicht viel in meinem Code...

    (*) ich denke mal, QMap von Qt wird sich da nicht soviel anders verhalten



  • crashterpiece schrieb:

    (*) ich denke mal, QMap von Qt wird sich da nicht soviel anders verhalten

    RTFM.
    Btw. wie wärs mit QAVLTree? 😉 :p



  • gibt doch lower_bound, das liefert dir afaik nächstkleinere element



  • crashterpiece schrieb:

    Mit dem klitzekleinen Unterschied, dass ich bei einer Map(*) nach erfolgloser Suchen nach einer Einfuegestelle einen Pointer auf end() bekomme. In einem Baum bekomme ich die korrekte Einfuegestelle und kann diese direkt verwenden.

    Der operator[] legt direkt ein default-konstruiertes Objekt an der korrekten Stelle an, wenn er nichts findet.



  • Ein bisschen Off topic : Es würde mich durchaus interessieren wie das mit den Rechten nun steht.



  • Ben04 schrieb:

    Ein bisschen Off topic : Es würde mich durchaus interessieren wie das mit den Rechten nun steht.

    Marc++us und ich diskutierten die Lizenzproblematik bereits... hier mal ein Auszug einer E-Mail:

    Marc++us schrieb:

    Daher unterliegen die Artikel zur Zeit einer ganz einfachen Lizenz (nämlich dem deutschen Recht):

    a) jeder der einen Artikel kopieren/veröffentlichen/modifizieren will, benötigt die Erlaubnis des Autors - wir haben damit gar nichts zu tun
    b) wir haben das Nutzungsrecht
    c) niemand darf ohne Erlaubnis von c++.de die Artikel als Paket kopieren und veröffentlichen (Urheberrecht auf "Datensammlung")



  • ich kann dazu sagen, dass meine DA ohnehin auf OpenSource-Software basiert (zB Qt und diverse andere Bibliotheken). Der Einsatz ist im medizinischen Bereich und definitiv auf einen kleinen Benutzerkreis eingeschränkt.

    Vielleicht könnt ihr in euerer Diskussion ja einmal berücksichtigen, ob die Implementierung eines bekannten Verfahrens (hier AVL-Bäume) noch unter besondere Rechte des Eigentümers fallen oder ob dies nur für vom Autor "eigenständig" geschriebenen Code dienen soll?



  • crashterpiece schrieb:

    Mit dem klitzekleinen Unterschied, dass ich bei einer Map(*) nach erfolgloser Suchen nach einer Einfuegestelle einen Pointer auf end() bekomme. In einem Baum bekomme ich die korrekte Einfuegestelle und kann diese direkt verwenden.

    Das kommt ganz darauf an, wie du suchst - find() liefert dir im Fehlerfall end() zurück, lower_bound(), upper_bound() und equal_range() liefern dir Iteratoren "in der Nähe" der Zielposition.
    (und insert() und operator[] suchen sich sogar selber ihre Zielposition)

    Zu den Rechten gilt im Zweifelsfall die Bemerkung, die ganz unten auf jeder Seite eingeblendet wird:

    C++ Forum schrieb:

    Die Vervielfältigung der auf den Seiten www.c-plusplus.net, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.


Anmelden zum Antworten