Computerwissenschaften

Fragen und Antworten für Studenten, Forscher und Informatiker

149
Warum ist das Halteproblem wirklich so wichtig?

Ich verstehe nicht, warum das Problem des Anhaltens so oft verwendet wird, um festzustellen, ob ein Programm anhält. Die Wikipedia [article] [1] erklärt zu Recht, dass eine deterministische Maschine mit endlichem Speicher einen vorherigen Zustand anhält oder wiederholt. Sie können den Algorithmus...

130
Warum gibt es so viele Programmiersprachen?

Ich beherrsche C / C ++ ziemlich fließend und kann mich in den verschiedenen Skriptsprachen (awk / sed / perl) zurechtfinden. Ich habe viel mehr mit Python angefangen, weil es einige der raffinierten Aspekte von C ++ mit den Skriptfunktionen von awk / sed / perl kombiniert. Aber warum gibt es so...

122
Warum kann ich eine Grafik betrachten und sofort den nächstgelegenen Punkt zu einem anderen Punkt finden, aber ich benötige O (n) Zeit für die Programmierung?

Lassen Sie mich erklären: Wenn ich bei einem Streudiagramm mit einer bestimmten Anzahl von Punkten n mental den nächsten Punkt zu einem beliebigen Punkt im Diagramm finden möchte, kann ich die meisten Punkte im Diagramm sofort ignorieren und meine Auswahl auf eine kleine, konstante Anzahl von...

105
So täuschen Sie die Heuristik „probieren Sie einige Testfälle aus“: Algorithmen, die korrekt erscheinen, aber tatsächlich falsch sind

Um zu testen, ob ein Algorithmus für ein Problem korrekt ist, versuchen Sie in der Regel, den Algorithmus für eine Reihe einfacher Testfälle von Hand auszuführen. Versuchen Sie es an einigen Beispiel-Problemfällen, einschließlich einiger einfacher Eckfälle ". Dies ist eine großartige Heuristik: Es...

82
Quicksort-Partitionierung: Hoare vs. Lomuto

Es gibt zwei QuickSort-Partitionsmethoden, die in Cormen erwähnt werden: Hoare-Partition(A, p, r) x = A[p] i = p - 1 j = r + 1 while true repeat j = j - 1 until A[j] <= x repeat i = i + 1 until A[i] >= x if i < j swap( A[i], A[j] ) else return j und: Lomuto-Partition(A, p, r) x = A[r] i =...