Grund, Aussagen- und Prädikatenlogik zu lernen


14

Ich kann verstehen, wie wichtig es ist, dass Informatiker oder Ingenieure, die mit der Softwareentwicklung zu tun haben, das Studium der grundlegenden Logik als Grundlage verstanden haben.

Aber gibt es Aufgaben / Jobs, die explizit das Wissen über diese erfordern, außer den Aufgaben, für die irgendeine Art von Wissensrepräsentation erforderlich ist Knowledge Base? Ich möchte eher die Arten von Aufgaben hören, als konzeptionelle Antworten.

Der Grund, warum ich das frage, ist nur meine Neugier. Während CS-Studenten eine gewisse Zeit mit diesem Thema verbringen müssen, haben einige praxisintensive Kurse (z. B. AI-Class ) dieses Thema vollständig übersprungen. Und ich frage mich nur, ob Wissen zum Beispiel beim predicate logicZeichnen helfen kann, ER diagramaber keine Voraussetzung ist.


Update 27.05.2012) Danke für die Antworten. Jetzt denke ich, dass ich die Bedeutung von logicin CS mit seiner enormen Anwendungsmenge völlig verstehe und damit einverstanden bin . Ich habe gerade die beste Antwort ausgewählt, die ich wirklich von der Beeindruckung der Lösung für Windowsdas Bluescreen-Problem erhalten habe.


4
Als ich meine Antwort schrieb, war mir der Umfang Ihrer Frage unklar. Beschränken Sie sich auf CS oder Industrie oder beides oder heben Sie vielleicht im Allgemeinen ab?
Dave Clarke

@ Dave Clarke Ja, ich fand das auch nicht klar genug. Das erste, was ich wissen wollte, war, in welcher Branche die Kenntnis der spezifischen Logik erforderlich ist (obwohl ich Ihre Antwort schätze, um mich selbst davon zu überzeugen, dass Softwareentwickler dieses Thema nicht überspringen sollten).
IsaacS

Es wäre gut, wenn Sie Ihre Frage ändern könnten, um zu erfassen, wonach Sie wirklich suchen.
Dave Clarke

Wie genau würde man eine ifBedingung ohne Aussagenlogik schreiben ?
edA-qa mort-ora-y

Antworten:


22

Ich neige dazu, die Vereinigung und alles, was damit zu tun hat, zu mögen . Wenn Sie die Aussagen- und Prädikatenlogik nicht kennen, überspringen Sie die Grundlagen der Logik. Wenn Sie ein Interesse an einer Auflistung haben , dann ist dies wie ein Interesse an Mathematik und dem Überspringen von Addition und Multiplikation. Logik ist nicht nur für KI.

Denken Sie als praktische Antwort an das Intel-Fließkomma-Problem und daran, wie Sie es nie mehr sehen. Dank der Verwendung von Theorembeweisen gehören sie der Vergangenheit an. Erinnern Sie sich an den Microsoft-Bluescreen des Todes . Dank SAT-Lösern, Modellprüfung und anderen logikbasierten Lösungen sind sie vom Aussterben bedroht.


3
Vom Aussterben bedrohte Arten [Zitat nee - Segmentierungsfehler. Core abgeladen.
JeffE

@ JeffE Wenn Sie nach einem Zitat suchen, stelle ich stattdessen konkrete Beweise vor. Wann haben Sie das letzte Mal eines gesehen? :)
Guy Coder

3
Ich habe noch nie einen gesehen. Ich benutze einen Mac.
JeffE

1
Bei @JeffE Macs handelt es sich um eng gekoppelte Systeme, bei denen alles von der Maschinenarchitektur bis hin zu Anwendungsprogrammen von einem Team / einer Organisation entschieden wird. Windows-Systeme sind offen, und eine Vielzahl von Herstellern und Teams bieten Lösungen an, die sich zusammenfügen lassen und sich nur auf die festgelegten Standards und Schnittstellen stützen (häufig lose und vage). Sie sind eine viel größere Herausforderung für die Informatik. Die Microsoft-Teams, die die Theorembeweisungs- / statischen Analysetechniken entwickelt haben, um dies sicher zu tun, haben grundlegende Fortschritte auf unserem Gebiet erzielt.
Uday Reddy

1
@UdayReddy: Ich bezweifle nicht, dass Microsoft-Forscher grundlegende Fortschritte erzielt haben oder dass das BSOD viel seltener ist als früher. Aber "vom Aussterben bedrohte Arten" sind nicht unterstützte Übertreibungen. fehlerhafter Code ist nicht die einzige Ursache für Abstürze.
JeffE

22

Es gibt äußerst tiefe und allgegenwärtige Verbindungen zwischen Logik und Informatik. Denken Sie daran, dass die Informatik auch als "Informationstechnologie" oder "Informatik" bezeichnet wird, was bedeutet, dass Computersysteme Informationen erfassen, verarbeiten und bereitstellen. Nun, Logik ist eine ähnliche Sache. Es wird untersucht, wie Informationen in Sätzen erfasst werden und wie eine Aussage eine Folge einer anderen sein kann, dh wie ihr Informationsgehalt bereits in einer anderen Aussage (oder einer Sammlung von Aussagen) vorhanden ist. In diesem Sinne sind Logik und Informatik im Wesentlichen gleichDisziplin, die sich auf verschiedene Aspekte konzentriert. Logiker (Church, Kleene, Turing, Post und ihre Studenten und Kollegen) haben die Disziplin der Informatik geschaffen, und viele Logiker leisten weiterhin Beiträge zur Informatik, insbesondere Jean-Yves Girard und seine Studenten.

Hier sind einige Standardanwendungen der Logik in der Informatik:

  • Der Entwurf digitaler Schaltungen basiert vollständig auf der Vorschlagslogik, so dass seine Ingenieure ihn eher als "Logikentwurf" als als "Schaltungsentwurf" bezeichnen. Sogar das Schreiben eines Computerprogramms wird oft als das Entwickeln seiner "Logik" angesehen. (Beachten Sie, dass "Logik" im letzteren Sinne eher eine informelle Idee als eine formale Logik ist, die verwendet wird, um auf den Informationsfluss durch das Programm zu verweisen und ob er korrekt verarbeitet wird.)

  • Prädikatenlogik und ihre mathematische Verwandtschaft, die Mengenlehre, werden in einer Vielzahl von Computersprachen verwendet , z. B. in der Sprache SQL für relationale Datenbankabfragen. Es gibt auch auf Logik basierende Programmiersprachen, die als "Logik-Programmiersprachen" bezeichnet werden.

  • Die Wissensrepräsentation , die Sie bereits erwähnt haben, hat viele auf Logik basierende Formalismen. Auch wenn nichtlogische Formalismen verwendet werden, haben viele von ihnen immer noch eine logische Bedeutung und basieren daher auf Logik.

  • Die probabilistische Logik, bei der Aussagen nicht nur wahre / falsche Werte, sondern auch Gewissheits- / Unsicherheitsgrade aufweisen, ist zunehmend die Grundlage für maschinelle Lernsysteme .

  • Wenn Sie formell angeben möchten, was ein Programm tut, dh eine Programmspezifikation angeben , werden Sie eine logische Sprache verwenden. In der Tat gibt es viele Programmspezifikationssprachen wie Z und B, die auf Prädikatenlogik und Mengenlehre basieren. Es gibt auch Spezifikationssprachen, die auf Gleichungslogik basieren, wie z. B. Larch. Informatiker erfinden häufig neue Logik, um die Bedürfnisse der Informatik darzustellen, z. B. Hoare-Logik und Trennungslogik, oder sie greifen verschiedene unterbenutzte Formen traditioneller Logik auf, entwickeln sie und entwickeln sie weiter.

  • Wenn Sie überprüfen möchten, ob ein Programm das tut, was es tun soll, dann verwenden Sie nicht nur die Sprache der Logik, sondern die gesamte Maschinerie der Logik: Beweistheorie, Modelltheorie und Entscheidungsverfahren. Die Verifikationstechnologie wächst rasant und ich gehe davon aus, dass sie in etwa einem weiteren Jahrzehnt routinemäßig für fast alle Softwareentwicklungen eingesetzt wird.

Tatsächlich sind die Verbindungen zwischen Logik und Informatik so tief und durchdringend, dass ich sagen würde, es ist schwierig, ein guter Informatiker zu sein, ohne ein gründliches Verständnis der Logik.

Der Grund, warum einige KI-Wissenschaftler die Logik zu diesem Zeitpunkt unterschätzen, ist, dass einige der frühen Entwickler der KI eine Standardlogik als Werkzeug vorgeschlagen hatteneher als eine Stiftung. KI verspricht von Natur aus Magie. Wir müssen die harte Arbeit von Programmiersystemen nicht machen, um Ergebnisse zu liefern. Sie könnten auf eigene Faust herausfinden, wie sie Lösungen herstellen können, weil sie "intelligent" wären. Logik schien richtungsweisend zu sein, denn wenn Computersysteme Logik verstehen und wissen, wie Informationen nach den Regeln der Logik verarbeitet werden, sind sie in der Lage, Magie auszulösen. Dieser Glaube an die Logik war im Nachhinein fehl am Platz. Erstens ist die Standardlogik zu stark und zu schwach zugleich. Es ist zu stark in dem Sinne, dass die Regeln der Logik zu allgemein sind, um wirksame Verfahren zu entwickeln. Es ist auch zu schwach, weil es die Logik ist, die von Mathematikern für die Bedürfnisse der Mathematik entwickelt wurde und die es nicht tut. ' Sie verfügen nicht über das erforderliche Vokabular, um mit vielen anderen Arten von Informationen aus der realen Welt fertig zu werden, mit denen KI-Systeme umgehen müssen (z. B. Unsicherheit, Kontextinformationen wie Zeit, Veränderung, Wissen, Entscheidungsfreiheit usw.). Die KI unterzieht sich derzeit einer Gegenreaktion gegen die Logik. Ich denke jedoch, dass KI-Wissenschaftler erkennen werden, dass all die neueren Methoden immer noch darauf basieren, wenn sie diese Gegenreaktion überwindenLogik, breit ausgelegt .


Fügen Sie relationale Datenbanken hinzu!
Reinierpost

Sehr nette und vollständige Antwort, erwähne Jean-Yves Girard. Betrachten Sie die probabilistische Logik als dasselbe Forschungsgebiet wie die Fuzzy-Logik? In der Literatur begegnen wir den beiden Begriffen und ich würde gerne wissen, ob sie den gleichen Forschungsbereich bezeichnen.
Zurgl

@zurgl. Ich verstehe, dass es keinen einzigen Formalismus gibt, der fest als "probabilistische Logik" bezeichnet wird. Fuzzy-Logik ist in der Tat ein solcher Formalismus, aber es gibt auch andere. Die Form des probabilistischen Denkens, die heute in der künstlichen Intelligenz am erfolgreichsten ist, ist die Bayes'sche Folgerung. Die logischen Grundlagen sind jedoch noch nicht fest gelegt.
Uday Reddy

17

Logik ist für die gesamte theoretische Informatik von grundlegender Bedeutung. Ohne diese zu erlernen, können Sie die Semantik der Programmiersprache, die Turing-Maschinen, die Logikprogrammierung, die Berechenbarkeit usw. nicht richtig verstehen. Sogar das Denken in Bezug auf Ihre Programme wird ohne sie schwieriger. Sicherlich ist es praktisch unmöglich, einen mathematischen Beweis für ein CS-Konzept zu erbringen.

Oder Sie fragen nach Anwendungen in der Industrie. Lernlogik bildet die Grundlage für das Lernen, wie man klar argumentiert und Lücken in den Argumenten anderer Menschen erkennt. Logik ist von grundlegender Bedeutung, unabhängig davon, ob Sie die formalen Symbole verwenden oder nicht.


Ihnen fehlen Algorithmen.
Yuval Filmus

4
Das ist in "und so weiter" enthalten.
Dave Clarke

9

Eine der sich wiederholenden Aufgaben von CS-Praktikern und -Theoretikern besteht darin, Vertrauen in die Richtigkeit ihres Codes zu gewinnen.

Es gibt zwei Hauptansätze:

  1. Beweis: Entwickeln Sie einen logischen Beweis dafür, dass ein Teil eines Systems bestimmte Eigenschaften aufweist, möglicherweise unterstützt durch Vorbedingungen, vertragliche Gestaltung und Codeprüfungen.
  2. Testen: Testen Sie, ob bestimmte Eigenschaften für eine Vielzahl von Eingaben gelten, und veranlassen Sie dann, dass diese Eigenschaft für andere Eingaben gilt.

Die erste, basierend auf logischen Methoden, ist oft die einzige Option, wenn

  1. Es gibt keine typischen Eingaben. Wenn Sie beispielsweise Sicherheitseigenschaften testen, müssen Sie sich um die atypischen Eingaben kümmern. Wenn Sie also nicht logisch herausfinden können, welche Eingaben atypisch sind, ist es unwahrscheinlich, dass Sie eine gute Abdeckung erhalten.
  2. Der Konfigurationsraum ist sehr groß, daher müssen Sie ihn in Teile zerlegen, indem Sie logisch überlegen, welche Teile sich auf welche anderen Teile auswirken können, bevor Sie sie lokal testen.
  3. Es liegt nur eine Dokumentation vor, die das Randfallverhalten von Systemen außerhalb Ihrer Kontrolle beschreibt. Möglicherweise können Sie sie simulieren, aber nicht testen, was passiert, wenn eine externe Abhängigkeit ausfällt, da Sie aus rechtlichen oder ethischen Gründen keinen Ausfall verursachen können.

Empirische Tests ohne Beweise sind grundsätzlich ein Ersatz für Beweise. Wenn Sie ein System so entwerfen, dass es testbar ist, erstellen Sie eine Proofskizze, in der Sie Teile des Proofs mit "X, Y und Z hier testen" ausfüllen. Die Fähigkeit, logisch zu argumentieren, ist wichtig, um ein testbares System zu entwerfen. Wenn das System nicht prüfbar oder nachweisbar ist, kann der Konstrukteur / Architekt nicht sagen, dass es für den beabsichtigten Gebrauch geeignet ist.


6

Zwei der wichtigsten Bereiche, in denen die Logik eine entscheidende Rolle spielt, sind:

  1. Formale Sprachspezifikation und Verifikation .
  2. Feste Parameter tractable Klassen .

Z

Kurz gesagt: 1. Definition der Sprache braucht Logik, 2: Gerechtigkeit ihrer Verfahren braucht Logik, 3. Verifizierungsverfahren brauchen Logik.

Ich sollte erwähnen, dass dies anders ist als Compiler-Design oder ..., Dies ist eine "formale" Definition von Sprachen. Hauptgrund dafür ist der Nachweis der Korrektheit von Sprache oder Modell, auch mit einem formalen Beweis. Dies kann zur Überprüfung von Softwaremodellen, zum Auffinden von Fehlern vor der Implementierung, zum erneuten Auffinden von Deadlocks vor der Implementierung usw. verwendet werden . Für Software, die dies simuliert, können Sie sich NModel anschauen .

Warum müssen Sie bei Problemen mit festen Parametern mit Logik arbeiten? Sie können Klassen mit fester Parameterverfolgbarkeit in verschiedene Logikebenen unterteilen, sie können ineinander konvertiert werden: Logik in Automaten, Automaten in Diagramme und umgekehrt. Aber wenn Wenn Sie ein Experte für Logik sind, können Sie diese einfach aufteilen und festlegen. Das wichtigste Theorem (nach dem Satz von Robertson und Seymour ) in diesem Bereich ist das Theorem von Courcelle . Weitere Informationen finden Sie unter Meta Algorithmic Theorem survey.


Während Logik verwendet werden kann, um Sprachen zu definieren, ist dies meiner Erfahrung nach kaum eine "entscheidende Rolle". Ich verstehe überhaupt nicht, in welcher Beziehung Logik zu FPT steht.
Raphael

@Raphael, ich sehe Antwort auf deinen Kommentar dauert mehr als eine Zeile, ich habe meine Antwort aktualisiert. Ich denke, ich habe dir geantwortet, aber wenn du immer noch denkst, dass es nicht in Ordnung ist, sag mir, über meinen "formalen" Teil. Ich denke, mein erster Wiki-Link war nicht gut genug. Ich habe mehr Informationen hinzugefügt Wenn Sie mehr darüber wissen möchten, können Sie es lesen.
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.