Wie formuliert man ein Rechenproblem konsequent?


20

Ich interagiere oft mit Leuten, die nach einem Algorithmus für ein Rechenproblem (oder dessen Komplexität) fragen möchten, aber sie drücken ihn nicht so aus, dass wir (Informatiker) ihn verstehen.

Es ist nicht hilfreich, sie auf Bücher wie CLRS zu verweisen, da die Beispiele dort in der Regel recht einfach und genau formuliert sind, z.

Gibt es ein gutes Buch (oder eine andere Ressource), in dem eine Person mit minimalen CS-Kenntnissen lernen kann, wie man Rechenprobleme in einer für Informatiker verständlichen und strengen Weise formuliert und angibt?

Vorzugsweise sollte das Buch viele Beispiele dafür enthalten, wie man Rechenprobleme anhand verschiedener Beispiele aus dem Bereich und der realen Welt konsequent formuliert.


Klärung

Um die Frage zu präzisieren, nehmen wir an, dass sie grundlegende mathematische / CS-Begriffe wie Mengen, Funktionen, Diagramme, Listen usw. auf der Stufe des ersten / zweiten Studienjahres des CS-Studenten kennen (was bei Leuten der Fall ist, in denen ich bin) Verstand). Zum Beispiel haben sie ein einführendes Lehrbuch wie Aho und Ullman gelesen (obwohl sie es möglicherweise nicht vollständig verstanden haben).


2
Ich denke, das ist eine gute Frage, aber ich weiß nicht, ob es eine gute Antwort gibt. Ich habe das Gefühl, es ist eine Art zu fragen: "Gibt es eine Möglichkeit, jemanden, der kein Informatiker ist, zu lehren, wie ein Informatiker zu denken?" Und die Antwort darauf lautet: "Ja, machen Sie sie zu einem Informatiker." Das heißt, einige Softwareentwickler haben möglicherweise Studien zu solchen Dingen durchgeführt.
Jmite

3
Ich denke auch, dass dies bis zu einem gewissen Grad das ist, wofür Use Cases sind. Wenn jemand nicht versteht, wie er sein Problem richtig formulieren kann, listen Sie eine Reihe von Szenarien auf, die beschreiben, was ein bestimmtes Programm tun soll, und das jeweils erwartete Verhalten. Daraus entwickelt der Programmierer eine Spezifikation. Das heißt, ich bin eine theoretische Person und kein Ingenieur. Wenn ich mich irre, können Sie mich gerne korrigieren.
Jmite

@jmite, danke für die Kommentare. Sie haben Recht, dass ein Teil des Software-Engineerings darin besteht, zu versuchen, zu verstehen, was ein Kunde will (ich glaube, sie nennen es Anforderungsanalyse ). Aber das ist normalerweise für große Projekte. Ich spreche nicht von solchen Projekten, sondern von einfachen Fragen wie denen, die wir auf dieser Website erhalten und die nicht konsequent formuliert sind. Ich habe Bücher gesehen, in denen Menschen unterrichtet wurden, wie man eine Aussage mit vielen Beispielen in Logik formuliert. Ich hoffe, dass es für Algorithmen und Rechenprobleme etwas Ähnliches gibt.
Kaveh

1
Das heißt, ich bin der Meinung, es erfordert eine bestimmte Denkweise, die insbesondere von Erwachsenen nicht leicht erlernt werden kann. Ich habe versucht, die Leute dazu zu bringen, die technischen Dinge fallen zu lassen und das Problem so einfach wie möglich in Bezug auf Alltagsgegenstände zu erklären. Das Problem ist, dass sie in der Regel eine Einschränkung vergessen, oder sie lassen es wie eine Operation klingen, die O (N) in ihrem tatsächlichen System ist, ist O (1), und so weiter. Ich werde also mit etwas enden, das einer strengen Definition des falschen Problems sehr nahe kommt.
svinja

Antworten:


3

Eine gute Ressource dafür, die unter Akademikern ziemlich bekannt, aber außerhalb von Spezialisten nicht so weit verbreitet ist, ist Mathematical Writing von Donald E. Knuth, Tracy L. Larrabee und Paul M. Roberts. Es gibt ein veröffentlichtes Buch, Vorlesungsvideos und eine Reihe von Notizen. Es ist eher aus der Perspektive von Leuten geschrieben, die versuchen, mathematisches Schreiben zu beherrschen, z. B. um Papiere zu erstellen, aber alle Ratschläge sind in hohem Maße auf den Fall von Laien anwendbar, die versuchen, Probleme präzise zu formulieren. Das mathematische Schreiben ist ein wissenschaftlicher Ansatz, der es ermöglicht, mathematische / algorithmische Probleme genau zu definieren / zu formulieren - und als Buchdetails , z. B. über Algorithmen oder Beweise , zu lösen .

Außerdem beschreibt der klassische Garey & Johnson-Text "Computers & Intractability" nicht genau, wie Probleme präzise formuliert werden, aber er enthält viele Beispiele und verschiedene theoretische / konzeptuelle / technische "Muster", die in Abschnitte mit ähnlichen Problemen unterteilt sind wird als "Baustein" zur Beschreibung von rechnerischen / algorithmischen Problemen verwendet.


Danke vzn, das sind nette Quellen zum Schreiben von Mathematik, aber ich suche nicht nach etwas anderem. Die Ausgabe ist nicht gut in Mathematik zu schreiben, aber es gibt Ressourcen, mit denen man lernen kann, wie man Rechenprobleme klar genug formuliert, damit ein Experte verstehen kann, wonach die Person, die die Frage stellt, sucht und ihnen hilft.
Kaveh

yw; Sie sagen, das sind zwei verschiedene Dinge, und in Wörtern / Phrasen sind sie, aber & ich sage, sie sind [um einen Software-Engineering-Ausdruck auszuleihen] "eng gekoppelt"
vzn

3

bin gerade auf diesen netten / ordentlichen, ungewöhnlichen, relativ neuen / unbekannten Verweis auf seiner Homepage von Emmanuele Viola , Professor (T) CS an der Northeastern University, gestoßen, der anscheinend an keiner anderen Stelle veröffentlicht wurde. 41pp. Es beginnt mit sehr grundlegenden mathematischen Konzepten, z. B. Implikation, und reicht dann bis zu fortgeschrittenen Themen wie dem Erdős-Szekeres- Theorem und der Ramsey-Theorie .


0

Kaufen Sie das Buch Algorithmen und Datenstrukturen von Robert Lafore.

In diesem Buch wird jeder Algorithmus als eine Geschichte erklärt, ähnlich einer Poesie. Geben Sie der Person dann die Lafore-Version eines Algorithmus und später die CLRS-Version.

Vielleicht bekommt die Person auf diese Weise ein Gefühl dafür, wie sie von einer intuitiven Beschreibung zu einer strengen Beschreibung übersetzen kann.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.