Frage:
Muss ich gängige CS-Algorithmen zitieren?
0xfede7c8
2019-08-12 19:10:14 UTC
view on stackexchange narkive permalink

Ich arbeite an meiner Abschlussarbeit für einen CS-Kurs und möchte einen gemeinsamen Sortieralgorithmus verwenden ( Quicksort für die Neugierigen). Muss ich einen Verweis auf diesen Algorithmus einfügen (zitieren oder zitieren)? Oder ist es so häufig, dass ich nicht muss? Beachten Sie, dass es erstmals 1961 veröffentlicht wurde und von fast jedem in der CS-Welt sehr häufig verwendet wird.

Es liegt wirklich an Ihnen (und Ihrem Berater vielleicht).Auf jeden Fall ist es nicht so viel Arbeit, die Referenz für Quicksort und sogar einen Teil der ziemlich umfangreichen Bibliographie zu ihrer Analyse aufzuspüren, und eine Handvoll Referenzen wird kaum dazu führen, dass eine maximale Seitenzahl überschritten wird ...
Was bedeutet "verwenden" in diesem Zusammenhang?Schreiben Sie ein Programm oder beschreiben Sie nur den Algorithmus selbst?
Ist es wichtig, welcher bestimmte Algorithmus verwendet wird, oder ist der wichtige Punkt die Tatsache, dass Ihre Daten irgendwie sortiert werden?
Wenn Sie eine bestimmte Sache zitieren müssen (z. B. ein Lemma, das zum Beispiel im ursprünglichen Beweis für Korrektheit / Komplexität verwendet wird), dann zitieren Sie es auf jeden Fall, egal wie bekannt es ist.Wenn Sie einfach einen neuen Algorithmus definieren und ein Schritt darin besteht, "dieses Array mit Quicksort zu sortieren", ist möglicherweise kein Zitat erforderlich (an dieser Stelle können Sie sogar sagen, dass Sie das Array mit einem beliebigen O (n logn) sortieren.Algorithmus ", wenn Sie keine spezifischeren Anforderungen an den Sortieralgorithmus haben).
@Abigail hängt davon ab, ob Sie am Ende auf 200 Algorithmen verweisen oder nicht
Was auch immer Sie sich entscheiden, stellen Sie sicher, dass Sie diesen Artikel zum Austausch von Stapeln zur Rechtfertigung zitieren;)
Wenn Sie Hausaufgaben am College machen, ist die einzige wirkliche Antwort, Ihren Ausbilder zu fragen - dies ist keine tatsächliche akademische Arbeit, daher liegen die Regeln für die Benotung bei ihnen.
Zitieren Sie einfach ein klassisches Buch über Algorithmen, in dem Quicksort erklärt wird (fast jedes Buch enthält einen Abschnitt über Sortieralgorithmen).
Sieben antworten:
user2768
2019-08-12 19:33:19 UTC
view on stackexchange narkive permalink

Muss ich gängige CS-Algorithmen zitieren?

Nein .

Die Tatsache, dass erstmals 1961 veröffentlicht wurde , ist nicht relevant. Sie müssen es nicht zitieren, da es [weit verbreitet] und [gut] ist. ] bekannt von fast jedem in der CS-Welt .

Obwohl ein Zitat nicht erforderlich ist, können Sie es nach eigenem Ermessen angeben. Ein solches Zitat ist wahrscheinlich für eine Abschlussarbeit wichtiger als für eine akademische Veröffentlichung, da es für Studenten als wichtig angesehen werden kann, nachzuweisen, dass sie zitieren können.

Über das Zitieren der Originalquelle hinaus möchten Sie möglicherweise Ihre Lieblingslehrbücher zu diesem Thema zitieren (anstatt den gesamten Band zu zitieren, verweisen Sie auf einen bestimmten Abschnitt, z. B. \ cite [Kapitel 4.3 ] {Lehrbuch} in LaTeX).

Insbesondere könnte es sich lohnen, das relevante Kapitel von [* Einführung in Algorithmen *] (https://en.wikipedia.org/wiki/Introduction_to_Algorithms) von CLRS zu zitieren.
Mir wurde gesagt, dass das Zitieren eines Lehrbuchs "unprofessonal" ist, dass ein "professioneller" Artikel immer einen Forschungsartikel oder eine Monographie zitieren sollte.Ich bin mir nicht sicher, ob ich das kaufe, aber zu der Zeit musste ich das Zitat ändern.
@sds Eh.Ich denke, man sollte sich den Zweck des Zitats ansehen.Ich glaube nicht, dass etwas falsch daran ist, Lehrbücher aus anderen Bereichen zu zitieren (z. B. bin ich Informatiker und habe Lehrbücher aus der Mathematik zitiert) oder wo Sie obskure Details benötigen, die in einem vorgestellt werden (ich habe Knuth für a zitiertspezifische Tatsache über die Leistung von Hash-Tabellen).Das Problem tritt auf, wenn Sie ein Lehrbuch für etwas zitieren, das allgemein bekannt ist, und dort besteht das Problem eher darin, dass Sie überhaupt zitieren, als dass Sie ein Lehrbuch zitieren.
@sds Nach dem vorherigen Kommentar sollte man sich den Zweck des Zitierens ansehen: Quellen jenseits des Originalmanuskripts können zusätzliche Erkenntnisse bieten, die für den Leser nützlich sind.Sie können sich sogar dafür entscheiden, solche Quellen zu kennzeichnen, z. B. "Knuth fasst Thema X zusammen und bietet eine detaillierte Leistungsanalyse."
@Basile Was ist der Sinn eines solchen Zitats?Ich meine, jeder sich selbst respektierende Informatiker wird CLRS gelesen haben und eine Kopie in Reichweite haben. Welchen Wert hat es also für das Papier?Wenn Sie auf ein bestimmtes Detail verweisen können, das sicher wichtig ist, aber nur ein "Hey, ich habe Quicksort verwendet und wie jeder hier weiß, können Sie es in diesem Buch nachschlagen" erscheint unnötig.
@sds Ich habe Lehrbücher in einem Papier zitiert und das Papier kam zu einer guten Konferenz.Keiner der Rezensenten sagte etwas.Das ist nur ein Datenpunkt, aber das Zitieren eines Lehrbuchs bei Bedarf ist definitiv nicht unprofessionell.
@Voo Wenn Sie meine ganze Antwort lesen, erkläre ich.Es wird auch in den obigen Kommentaren erklärt.
Ich stimme dem größten Teil Ihres Textes zu, aber - Sie kommen damit zu dem falschen Schluss ...
@einpoklum Ihr Kommentar scheint nützlich zu sein, ist aber nicht ... #reviewerTwo
@user2768: Siehe meine eigene Antwort.
@user2768 Sie sagen, er sollte nicht und treten dann mit "Sie können nach eigenem Ermessen eine bereitstellen" zurück und sagen, Sie könnten sie in eine Abschlussarbeit aufnehmen, weil dies zeigt, dass ein Student zitieren kann.Aber nirgends nennen Sie einen wirklich guten Grund, warum es das eigentliche Papier verbessern würde, die Referenz aufzunehmen, worüber ich mich wundere.
@Voo Ich sage, Sie müssen nicht, Sie sollten nicht;Ich trete nicht zurück.Ich nenne einen wirklich guten Grund [zum Zitieren], z. B. weil es zeigt, dass ein Schüler zitieren kann.Ich bin mir nicht sicher, worüber Sie sich wundern.Ihr Kommentar scheint Ihre Bedenken auszuräumen.(Meine Antwort erklärt nicht, warum das Zitieren von Lehrbüchern nützlich ist. Kommentare zB https://academia.stackexchange.com/questions/134582/do-i-have-to-cite-common-cs-algorithms/134585?noredirect=1 # comment358595_134585 & https://academia.stackexchange.com/questions/134582/do-i-have-to-cite-common-cs-algorithms/134585?noredirect=1#comment358598_134585.)
@Voo "Ich meine, jeder sich selbst respektierende Informatiker wird CLRS gelesen haben und eine Kopie in Reichweite haben." Sie sollten auch Studenten oder Absolventen berücksichtigen.Auch ist nicht jeder Amerikaner oder kann es sich leisten, teure ausländische Lehrbücher zu kaufen.
BrianH
2019-08-12 19:47:20 UTC
view on stackexchange narkive permalink

Wenn die spezifische Verwendung des Algorithmus für die Arbeit wichtig ist, sollten Sie angeben, was Sie speziell verwendet oder implementiert haben, und auch die breiteste / älteste Klasse von Algorithmen zu zitieren, wäre streng optional. Am Beispiel von Quicksort gibt es viele Dutzend Sorten davon, die dieselbe allgemeine Idee haben, aber unterschiedliche Eigenschaften und Leistungen aufweisen. Wenn Sie das Papier von 1961 als Referenz für Ihre Implementierung verwenden würden, würden Sie es natürlich zitieren. Wenn Sie die Java- oder C ++ - Sortierfunktion verwendet haben (die unterschiedlich sind und sich zwischen den Versionen geändert haben - Mergesort, Timsort, Hybrid usw.), würden Sie dies einfach sagen und müssen nicht herausfinden, worauf das basiert.

Wenn andererseits das Sortieren kein wichtiger Teil der Arbeit ist (es ist nur wichtig, dass es sortiert wurde, nicht wie Sie es sortiert haben), ist es üblich und akzeptiert, sich nicht die Mühe zu machen, jedes kleine Detail wie zu zitieren Dies. In den meisten Fällen ist es so unwichtig, wie etwas sortiert wurde, dass es überhaupt nicht im Text erwähnt wird. Wenn Sie sich jedoch mit Sortieralgorithmen (und einer Abschlussarbeit) befassen, sollten Sie detaillierter sein und großzügig zitieren. P. >

Da dies nicht für eine Konferenz, sondern für eine Abschlussarbeit und möglicherweise Teil eines benoteten Kurses ist, sollten Sie es wahrscheinlich trotzdem zitieren, möglicherweise sowohl das Original als auch die Quelle, die Sie tatsächlich als Referenz verwendet haben (Lehrbuch, Codebibliothek, was auch immer). Vor allem auf der Ebene der weniger als promovierten Doktoranden bevorzugen Ausbilder viel häufiger die Verwendung von Zitaten, und ich kenne viele Professoren, die es versäumen, Dinge zu zitieren, die man in einem tatsächlichen Artikel nicht erwähnen oder zitieren würde .

Coole Antwort auch.Ich habe verstanden, dass dieses Thema viel mit Kontext, Art und Publikum der Veröffentlichung zu tun hat.
Dies ist die beste Antwort, die ich gesehen habe.In Bezug auf den zweiten Absatz denke ich, dass das Auslassen von Zitaten, wenn Sie sich nur darum kümmern, dass etwas sortiert ist (oder analoge andere Ausgaben), insofern vernünftig ist, als es offensichtlich ist, dass eine Sortierung möglich ist.Wenn es nicht offensichtlich ist, dass eine bestimmte Anordnung, die Sie benötigen, aus einer beliebigen Eingabe erhalten werden kann, sollten Sie das Ergebnis zitieren, das bewiesen hat, dass dies möglich ist.
Hinweis: Javas Standard-Sortierimplementierung, die von den meisten Sortiermethoden verwendet wird, ist seit Java 7 timsort. Vorher war es Mergesort.
@VictorStafusa Ah, Mergesort, mein Gedächtnis hat mich verlassen, danke für die Korrektur!
MSalters
2019-08-13 13:18:03 UTC
view on stackexchange narkive permalink

"Quicksort" bezieht sich heute selten auf die Version von 1961; Der Algorithmus wurde seitdem verbessert. Wenn Sie zitieren wollen, sollten Sie natürlich etwas zitieren, das für Ihre These relevant ist. Wie andere sagten, wenn Sie nur einen Algorithmus benötigen, um die Dinge zu sortieren, müssen Sie nicht zitieren. Wenn Ihre These jedoch von den Details der Sortierung abhängt, ist es plötzlich wichtig, sie zu zitieren und richtig zu zitieren.

WBT
2019-08-14 19:11:54 UTC
view on stackexchange narkive permalink

Ich werde diesbezüglich eine überraschend konträre Position einnehmen:

Ja, Sie müssen die von Ihnen verwendete Implementierung in einem wissenschaftlichen Artikel zitieren

Es ist viel zu häufig, dass Wissenschaftler, die anderswo arbeiten und versuchen, Ergebnisse zu reproduzieren, dies nicht tun und viel Zeit damit verschwenden, sicherzustellen, dass ihre Einstellungen und Schritte genau denen entsprechen Sie versuchen zu replizieren. Zu oft ist das Problem auf einen bestimmten Fehler in einem Softwarepaket zurückzuführen, den das eine oder andere Labor verwendet, oder auf eine andere Auswahl in einem Implementierungsdetail, von dem niemand wusste, dass es darauf ankommt. Indem Sie die spezifische Implementierung angeben, die Sie verwendet haben, einschließlich der Versionsnummer der Pakete, sofern verfügbar, können Sie eine potenzielle Quelle von Frustration (und / oder falschen Betrugsvorwürfen!) Mit relativ geringen zusätzlichen Kosten beim Schreiben beseitigen. (Beachten Sie, dass "anderes Labor" manchmal eine Zukunft für Sie sein kann!)

Wenn Sie eine schnelle Online-Implementierung verwenden, kann die Lizenz in der Quelle auch ein Zitat erfordern. Sie könnten beispielsweise sagen: "Ich habe die Java-Implementierung von Quicksort verwendet, die unter https://en.wikibooks.org/w/index.php?title=Algorithm_Implementation/Sorting/Quicksort&oldid=3562350#Java gefunden wurde "(Beachten Sie die Verwendung des Parameters" oldid ", um eine Verknüpfung zu einer bestimmten Version herzustellen. Klicken Sie auf" Verlauf anzeigen "und dann auf das späteste Datum, um dies in der URL abzurufen.) Diese Zuordnung ist wohl von der Lizenz vorgeschrieben; ähnliche Geschichte für das, was Sie auf Stack Overflow finden.

Dies ist auch ein Kreditmittel für diejenigen, die möglicherweise viel Zeit (die sie für etwas anderes hätten aufwenden können) damit verbracht haben, ein Softwarepaket zu schreiben, das für die breitere Community nützlich ist. Der Kreditaspekt ist für akademische Entwickler wahrscheinlich wichtiger als für kommerzielle. In diesen Fällen gibt es möglicherweise ein Papier, in dem das Paket angekündigt oder beschrieben wird, das Sie zu diesem Zweck zitieren können und sollten.

CodesInTheDark
2019-08-13 06:20:34 UTC
view on stackexchange narkive permalink

Nein, wenn der Algorithmus einen bekannten Namen hat, bedeutet dies, dass davon ausgegangen wird, dass Sie nicht der Autor sind und dass die Leser sich mit diesem Namen als Referenz vertraut machen können. In ähnlicher Weise müssen Sie beim Schreiben einer mathematischen Arbeit nicht jedes Mal eine Referenz erstellen, wenn Sie Begriffe wie Hamel-Basis, Lagrange-, Gauß-Verteilung, Fourier-Transformation usw. verwenden, da diese wie QuickSort, TimSort bekannt sind , Simplex-Methode ... die Verwendung eines bestimmten Namens ist genug Referenz für den Leser.

Ich habe neulich nur darüber nachgedacht.Was eine Person als "bekannt" oder allgemein bekannt ansieht, gilt nicht für eine andere Person.QuickSort ist ein gutes Beispiel.Die meisten Leute, die Informatik studiert haben, würden es wissen.Die durchschnittliche Person auf der Straße würde dies jedoch nicht tun.Zum Beispiel würde die Person an der Kasse des Lebensmittelgeschäfts dies wahrscheinlich nicht tun.Wenn man sich also entscheidet, etwas als Referenz zu zitieren, kommt es darauf an, ob es angesichts des Themas der Arbeit als "allgemein bekannt" angesehen wird?
"Jedes Mal"?Nein, nur das erste Mal.Sicher in einer Arbeit.Siehe meine Antwort.
Ist der Name selbst nicht eine Referenz?Wenn ich Fourier Transform sage, würde jeder wissen, dass ich dafür keine Anerkennung bekomme, und der Name ist ein Verweis auf die Formel / Arbeit, die jeder leicht herausfinden kann (sogar mehr als einen Link zu einem Artikel aus dem 19. Jahrhundert).
@Celeritas "allgemein bekannt" * innerhalb der Zielgruppe der Zeitung *.Es ist keine interessante Frage, ob eine wissenschaftliche Arbeit für die meisten Mitarbeiter an der Kasse eines Lebensmittelgeschäfts richtig zitiert oder sogar von Bedeutung ist.
einpoklum
2019-08-14 19:24:12 UTC
view on stackexchange narkive permalink

Muss ich gängige CS-Algorithmen zitieren?

Im Allgemeinen und in einer Abschlussarbeit ja.

Warum?

  • Sie können es für häufig halten, andere möglicherweise nicht. Nicht jeder befindet sich im selben Teilbereich der Informatik.
  • Möglicherweise verwenden Sie eine Variante des Algorithmus, die weniger allgegenwärtig ist. oder eine bestimmte Implementierung, wie @WBT vorschlägt.
  • Wenn Sie Begriffe aus der Definition oder Spezifikation des Algorithmus verwenden, kann es für den Leser nützlich sein, Zugriff auf ein Lehrbuch als Referenz / Inspiration / zu haben. was auch immer.
  • Eigentlich ist es selten eine schlechte Idee, eine Ausrede zu finden, um auf ein schönes Lehrbuch zu verweisen. Wählen Sie eine gute aus!
  • Es ist eine These, es ist nicht so, als ob Sie auf Platz drängen oder so.
  • Es ist besser, mit Zitaten auf Nummer sicher zu gehen.

Speziell für Quicksort - mmm, vielleicht nicht, kann nicht sicher sagen; hängt von den Besonderheiten ab.

Michael Kay
2019-08-15 14:51:09 UTC
view on stackexchange narkive permalink

Wenn Ihre Ergebnisse von einer Eigenschaft des Quicksort-Algorithmus abhängen, z. B. von seiner typischen Leistung oder der Leistung im ungünstigsten Fall, sollten Sie ein Dokument zitieren, das zeigt, dass der Algorithmus diese Eigenschaften aufweist. Wenn Sie beispielsweise absichtlich einen Algorithmus ausgewählt haben, der gut funktioniert, wenn die Daten bereits sortiert sind, ist es möglicherweise am besten, ein Papier zu zitieren, das Sortieralgorithmen vergleicht und zeigt, dass Quicksort in diesem Szenario eine gute Wahl ist. (Ich erinnere mich nicht, ob das tatsächlich stimmt, es ist nur ein Beispiel.)

Wenn ein Sortieralgorithmus dies tun würde, müssen Sie Ihre Wahl nicht wirklich begründen. In der Tat müssen Sie nicht wirklich sagen, welchen Algorithmus Sie gewählt haben.

Ich persönlich glaube nicht, dass Sie ein Papier zitieren müssen, das erklärt, was QuickSort ist. Es ist relevanter, etwas zu zitieren, das erklärt, warum es die richtige Wahl für Ihre spezielle Anwendung war.

Bei Quicksort hängt alles davon ab, wie der Drehpunkt gewählt wird.Die meisten Implementierungen, die ich gesehen habe, haben einige pathologische Fälle, die es für O (n ^ 2) -Verhalten anfällig machen.Ein häufiger Fall ist, wenn die Liste bereits sortiert ist.Ein einfacher Fall, der viele der naiven Verteidigungen gegen O (n ^ 2) besiegt, ist, wenn die Liste nur aus einer Reihe von Wiederholungen eines einzelnen Elements besteht.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...