<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="et">
	<id>http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=Iti0210lab74</id>
	<title>Iti0210lab74 - Redigeerimiste ajalugu</title>
	<link rel="self" type="application/atom+xml" href="http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=Iti0210lab74"/>
	<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Iti0210lab74&amp;action=history"/>
	<updated>2026-10-28T09:18:25Z</updated>
	<subtitle>Selle lehekülje redigeerimiste ajalugu</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=Iti0210lab74&amp;diff=18662&amp;oldid=prev</id>
		<title>PriitJ: /* Lihtne resolutsioonil põhinev tõestaja */</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Iti0210lab74&amp;diff=18662&amp;oldid=prev"/>
		<updated>2021-03-19T10:08:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Lihtne resolutsioonil põhinev tõestaja&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;et&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Vanem redaktsioon&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Redaktsioon: 19. märts 2021, kell 12:08&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l49&quot;&gt;49. rida:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;49. rida:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Funktsioon &amp;lt;code&amp;gt;resolve(current, clause)&amp;lt;/code&amp;gt; peab tagastama listi [[Iti0210lab72_resolve|võimalikest tulemustest]], mida saadakse kahele disjunktile &amp;lt;code&amp;gt;current&amp;lt;/code&amp;gt; ja &amp;lt;code&amp;gt;clause&amp;lt;/code&amp;gt; resolutsioonireegli rakendamisel. See funktsioon kirjuta ise.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Funktsioon &amp;lt;code&amp;gt;resolve(current, clause)&amp;lt;/code&amp;gt; peab tagastama listi [[Iti0210lab72_resolve|võimalikest tulemustest]], mida saadakse kahele disjunktile &amp;lt;code&amp;gt;current&amp;lt;/code&amp;gt; ja &amp;lt;code&amp;gt;clause&amp;lt;/code&amp;gt; resolutsioonireegli rakendamisel. See funktsioon kirjuta ise.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Iti0210lab72_resolve|resolve() näited]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Katsetame seda algoritmi väikese ülesande peal:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Katsetame seda algoritmi väikese ülesande peal:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PriitJ</name></author>
	</entry>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=Iti0210lab74&amp;diff=18634&amp;oldid=prev</id>
		<title>PriitJ: /* Ülesanne lahendamiseks */</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Iti0210lab74&amp;diff=18634&amp;oldid=prev"/>
		<updated>2021-03-16T16:01:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Ülesanne lahendamiseks&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;et&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Vanem redaktsioon&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Redaktsioon: 16. märts 2021, kell 18:01&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l130&quot;&gt;130. rida:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;130. rida:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Ülesanne lahendamiseks ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Ülesanne lahendamiseks ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Meil on antud maja elektriskeem, kus on kaitsmed (&#039;&#039;cb&#039;&#039;), seinakontaktid (&#039;&#039;p&#039;&#039;), lambid (&#039;&#039;l&#039;&#039;), lülitid (&#039;&#039;s&#039;&#039;) ja juhtmed (&#039;&#039;w&#039;&#039;). Lepime kokku, et elektriskeem töötab nii:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Meil on antud maja elektriskeem, kus on kaitsmed (&#039;&#039;cb&#039;&#039;), seinakontaktid (&#039;&#039;p&#039;&#039;), lambid (&#039;&#039;l&#039;&#039;), lülitid (&#039;&#039;s&#039;&#039;) ja juhtmed (&#039;&#039;w&#039;&#039;)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Valime iga elemendi - juhtme, kaitsme jne kohta ühe loogikasümboli ning ütleme, et kui näiteks &#039;&#039;w1&#039;&#039; on tõene, siis juhtmes 1 on vool&lt;/ins&gt;. Lepime kokku, et elektriskeem töötab nii:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# vool läbib kaitsmeid, kui need on korras (näiteks &amp;#039;&amp;#039;cb1&amp;#039;&amp;#039; on tõene). Lülitite puhul tähistab tõene ülemist asendit ja väär alumist asendit, skeemilt on näha kuidas vool neid sel juhul läbib.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# vool läbib kaitsmeid, kui need on korras (näiteks &amp;#039;&amp;#039;cb1&amp;#039;&amp;#039; on tõene). Lülitite puhul tähistab tõene ülemist asendit ja väär alumist asendit, skeemilt on näha kuidas vool neid sel juhul läbib.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# kui juhtmes on vool, siis sellega otse ühendatud lamp põleb (ja vastupidi, põleva lambi puhul on vool juhtmes).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# kui juhtmes on vool, siis sellega otse ühendatud lamp põleb (ja vastupidi, põleva lambi puhul on vool juhtmes).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PriitJ</name></author>
	</entry>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=Iti0210lab74&amp;diff=18633&amp;oldid=prev</id>
		<title>PriitJ: /* Ülesanne lahendamiseks */</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Iti0210lab74&amp;diff=18633&amp;oldid=prev"/>
		<updated>2021-03-16T15:43:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Ülesanne lahendamiseks&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;et&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Vanem redaktsioon&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Redaktsioon: 16. märts 2021, kell 17:43&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l154&quot;&gt;154. rida:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;154. rida:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Kuna reeglid peavad olema KNK (&amp;#039;&amp;#039;CNF&amp;#039;&amp;#039;) kujul, siis kasuta vajaduse korral teisendamiseks http://logictools.org/prop.html - nupp &amp;quot;Build&amp;quot; ja vali kõrvalt &amp;quot;clause normal form&amp;quot;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Kuna reeglid peavad olema KNK (&amp;#039;&amp;#039;CNF&amp;#039;&amp;#039;) kujul, siis kasuta vajaduse korral teisendamiseks http://logictools.org/prop.html - nupp &amp;quot;Build&amp;quot; ja vali kõrvalt &amp;quot;clause normal form&amp;quot;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== Esitamine ===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Kui oled tõestustega hakkama saanud, siis README failis esita:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# iga küsimuse juurde tehtud faktid, mis kirjeldavad antud situatsiooni&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# näide mõnest keerulisemast reeglist, võib olla nii algkujul kui KNK kujul. Kõiki reegleid pole tarvis tuua.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Iti0210]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Iti0210]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PriitJ</name></author>
	</entry>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=Iti0210lab74&amp;diff=18632&amp;oldid=prev</id>
		<title>PriitJ: Uus lehekülg: &#039;= Resolutsioonimeetod =  == Sissejuhatus ==  Ülesande eesmärgiks on õppida, kuidas toimib resolutsioonimeetod.  Selleks: # programmeerime lihtsa versiooni resolutsioonil põhi...&#039;</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Iti0210lab74&amp;diff=18632&amp;oldid=prev"/>
		<updated>2021-03-16T15:39:11Z</updated>

		<summary type="html">&lt;p&gt;Uus lehekülg: &amp;#039;= Resolutsioonimeetod =  == Sissejuhatus ==  Ülesande eesmärgiks on õppida, kuidas toimib resolutsioonimeetod.  Selleks: # programmeerime lihtsa versiooni resolutsioonil põhi...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Uus lehekülg&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Resolutsioonimeetod =&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Ülesande eesmärgiks on õppida, kuidas toimib resolutsioonimeetod.&lt;br /&gt;
&lt;br /&gt;
Selleks:&lt;br /&gt;
# programmeerime lihtsa versiooni resolutsioonil põhinevast tõestajast&lt;br /&gt;
# testime seda ülesannete peal, kus on tarvis loogilist järeldamist&lt;br /&gt;
&lt;br /&gt;
== Lihtne resolutsioonil põhinev tõestaja ==&lt;br /&gt;
&lt;br /&gt;
Teadaolevate faktide (&amp;#039;&amp;#039;KB&amp;#039;&amp;#039;) pealt mingi lause &amp;#039;&amp;#039;alpha&amp;#039;&amp;#039; tõestamiseks piisab, kui näidata et &amp;#039;&amp;#039;KB &amp;amp; -alpha&amp;#039;&amp;#039; on vastuolu, ehk siis ei ole võimalik korraga väita, et &amp;#039;&amp;#039;KB&amp;#039;&amp;#039; kehtib ja &amp;#039;&amp;#039;alpha&amp;#039;&amp;#039; ei kehti. Lihtne algoritmi prototüüp selleks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def simple_resolution_solver(KB, neg_alpha):&lt;br /&gt;
    # KB: list of known clauses&lt;br /&gt;
    #           clause example: a v b v -c v d&lt;br /&gt;
    #           choose your own representation, e.g. (&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;-c&amp;quot;, &amp;quot;d&amp;quot;)&lt;br /&gt;
    # neg_alpha: query clause, already negated&lt;br /&gt;
    # returns True if proof found, False otherwise&lt;br /&gt;
&lt;br /&gt;
    # initialize&lt;br /&gt;
    todo = [neg_alpha]&lt;br /&gt;
    done = KB.copy()&lt;br /&gt;
&lt;br /&gt;
    # process the todo list one by one&lt;br /&gt;
    while todo:&lt;br /&gt;
        current = todo.pop()&lt;br /&gt;
&lt;br /&gt;
        # combine current clause with all clauses we&amp;#039;ve already seen&lt;br /&gt;
        for clause in done:&lt;br /&gt;
            # apply resolution rule&lt;br /&gt;
            resolvents = resolve(current, clause)&lt;br /&gt;
            # handle new clauses generated by the resolution rule&lt;br /&gt;
            for resolvent in resolvents:&lt;br /&gt;
                # some important things that can happen here:&lt;br /&gt;
                # 1. resolvent is empty: proof found that KB-&amp;gt;alpha!&lt;br /&gt;
                # 2. resolvent is always true: throw it away, useless clause&lt;br /&gt;
                # ONLY if neither of these things happen:&lt;br /&gt;
                    todo.append(resolvent)&lt;br /&gt;
&lt;br /&gt;
        # we&amp;#039;re done with this clause&lt;br /&gt;
        done.append(current)&lt;br /&gt;
&lt;br /&gt;
    # loop ended without proof&lt;br /&gt;
    return False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funktsioon &amp;lt;code&amp;gt;resolve(current, clause)&amp;lt;/code&amp;gt; peab tagastama listi [[Iti0210lab72_resolve|võimalikest tulemustest]], mida saadakse kahele disjunktile &amp;lt;code&amp;gt;current&amp;lt;/code&amp;gt; ja &amp;lt;code&amp;gt;clause&amp;lt;/code&amp;gt; resolutsioonireegli rakendamisel. See funktsioon kirjuta ise.&lt;br /&gt;
&lt;br /&gt;
Katsetame seda algoritmi väikese ülesande peal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  P -&amp;gt; Q&lt;br /&gt;
  L &amp;amp; M -&amp;gt; P&lt;br /&gt;
  B &amp;amp; L -&amp;gt; M&lt;br /&gt;
  A &amp;amp; P -&amp;gt; L&lt;br /&gt;
  A &amp;amp; B -&amp;gt; L&lt;br /&gt;
  A&lt;br /&gt;
  B&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tõesta, et nende reeglite ja faktide pealt järeldub &amp;#039;&amp;#039;Q&amp;#039;&amp;#039;. Selleks pead reeglid kõigepealt CNF kujule viima, näiteks &amp;#039;&amp;#039;L &amp;amp; M -&amp;gt; P&amp;#039;&amp;#039; teisendub &amp;#039;&amp;#039;-L v -M v P&amp;#039;&amp;#039;. Funktsioonile pead tõestatava asja ette andma eitusena (&amp;#039;&amp;#039;-Q&amp;#039;&amp;#039;). Pane tähele, et tõestatav asi on ka disjunkt/lause, isegi kui ta koosneb ainult ühest literaalist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:400px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Teooria&amp;#039;&amp;#039;&amp;#039;: ANL loop, set of support&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
Toodud algoritm on küll lihtne, aga sisaldab juba õpiku kirjeldusega võrreldes olulisi optimisatsioone:&lt;br /&gt;
# [http://www.cs.miami.edu/home/geoff/Courses/CSC749-19F/Content/ANLLoop.shtml &amp;quot;ANL loop&amp;quot;] on algoritm, kus disjunktid jaotatakse &amp;quot;tegemata&amp;quot; ja &amp;quot;tehtud&amp;quot; listideks. Disjunkte võetakse ükshaaval tegemata listist ning proovitakse resolutsioonireeglit selle ja kõigi tehtud listi disjunktide vahel. Tekkinud uued disjunktid lisatakse tegemata listi. See garanteerib, et sama paari ei vaadata mitu korda.&lt;br /&gt;
# &amp;#039;&amp;#039;Set of support&amp;#039;&amp;#039; strateegia: kuna meil on eesmärgiks mingi fakti järeldumist kontrollida, siis see strateegia paneb &amp;quot;tegemata&amp;quot; listi ainult kontrollitava fakti ja &amp;quot;tehtud&amp;quot; listi kogu ülejäänud teadmise. Tegemata listi hakkavad siis tekkima ainult asjad, mis on kuidagi seotud meie kontrollitava faktiga. Näiteks, testülesande puhul on tegemata listis &amp;#039;&amp;#039;-Q&amp;#039;&amp;#039; ja kõik faktid tehtud listis, esimeses tsüklis tekiks kohe &amp;#039;&amp;#039;-P&amp;#039;&amp;#039; mis tähendab, et Q tõestamiseks peame esmalt tõestama P. Järgmisena leitakse P eeldused jne - see on väga sarnane &amp;#039;&amp;#039;backward chaining&amp;#039;&amp;#039; algoritmiga.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimeeritud variant ==&lt;br /&gt;
&lt;br /&gt;
Esialgne variant järeldusmootorist küll töötab, aga kui ta kohe järeldust ei leia, hakkab resolutsioonireegel piiramatult uusi disjunkte genereerima - proovi näiteks eemaldada testülesandest &amp;#039;&amp;#039;Q&amp;#039;&amp;#039; tõestamiseks vajalik fakt &amp;#039;&amp;#039;A&amp;#039;&amp;#039; ja vaata mis juhtub.&lt;br /&gt;
&lt;br /&gt;
Lisame neeldumise kontrolli. Lihtsustatult öeldes kontrollitakse iga resolutsioonireegli poolt genereeritud disjunkti juures, kas oli juba enne olemas mingi disjunkt, mis sisaldab sama infot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def resolution_solver(KB, neg_alpha):&lt;br /&gt;
    # KB: list of known clauses&lt;br /&gt;
    #           clause example: a v b v -c v d&lt;br /&gt;
    #           choose your own representation, e.g. (&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;-c&amp;quot;, &amp;quot;d&amp;quot;)&lt;br /&gt;
    # neg_alpha: query clause, already negated&lt;br /&gt;
    # returns True if proof found, False otherwise&lt;br /&gt;
&lt;br /&gt;
    # initialize&lt;br /&gt;
    todo = [neg_alpha]&lt;br /&gt;
    done = KB.copy()&lt;br /&gt;
&lt;br /&gt;
    # process the todo list one by one&lt;br /&gt;
    while todo:&lt;br /&gt;
        current = todo.pop()&lt;br /&gt;
&lt;br /&gt;
        # check if current is redundant&lt;br /&gt;
        for clause in done + todo:&lt;br /&gt;
            # if clause is a subset of current, then go back to the start of the loop&lt;br /&gt;
            # to pick new current&lt;br /&gt;
&lt;br /&gt;
        # combine current clause with all clauses we&amp;#039;ve already seen&lt;br /&gt;
        for clause in done:&lt;br /&gt;
            # apply resolution rule&lt;br /&gt;
            resolvents = resolve(current, clause)&lt;br /&gt;
            # handle new clauses generated by the resolution rule&lt;br /&gt;
            for resolvent in resolvents:&lt;br /&gt;
                # some important things that can happen here:&lt;br /&gt;
                # 1. resolvent is empty: proof found that KB-&amp;gt;alpha!&lt;br /&gt;
                # 2. resolvent is always true: throw it away, useless clause&lt;br /&gt;
                # ONLY if neither of these things happen:&lt;br /&gt;
                    todo.append(resolvent)&lt;br /&gt;
&lt;br /&gt;
        # we&amp;#039;re done with this clause&lt;br /&gt;
        done.append(current)&lt;br /&gt;
&lt;br /&gt;
    # loop ended without proof&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks algoritm kiiresti tulemusi andma, kui tõestust ei leita. Proovi jälle testülesannet, eemaldades fakti &amp;#039;&amp;#039;A&amp;#039;&amp;#039; või vajaliku reegli &amp;#039;&amp;#039;A &amp;amp; B -&amp;gt; L&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:400px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Teooria&amp;#039;&amp;#039;&amp;#039;: neeldumine&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
Kui meil on disjunktid &amp;#039;&amp;#039;A v B v C v D&amp;#039;&amp;#039; ja &amp;#039;&amp;#039;A v B v C&amp;#039;&amp;#039;, siis neist esimese võib ära jätta - miks, seda saab hästi aru lühema näite pealt: &amp;#039;&amp;#039;a &amp;amp; (a v b)&amp;#039;&amp;#039; on ekvivalentne &amp;#039;&amp;#039;a&amp;#039;&amp;#039;-ga. Resolutsioonimeetodi kontekstis nimetatakse seda tehnikat &amp;#039;&amp;#039;subsumption&amp;#039;&amp;#039;, ehk neeldumine. Kui kontrollime neeldumist nii, et leiame kas üks disjunkt on teise alamhulk, siis sellega leitakse ka korduvad disjunktid.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ülesanne lahendamiseks ==&lt;br /&gt;
&lt;br /&gt;
Meil on antud maja elektriskeem, kus on kaitsmed (&amp;#039;&amp;#039;cb&amp;#039;&amp;#039;), seinakontaktid (&amp;#039;&amp;#039;p&amp;#039;&amp;#039;), lambid (&amp;#039;&amp;#039;l&amp;#039;&amp;#039;), lülitid (&amp;#039;&amp;#039;s&amp;#039;&amp;#039;) ja juhtmed (&amp;#039;&amp;#039;w&amp;#039;&amp;#039;). Lepime kokku, et elektriskeem töötab nii:&lt;br /&gt;
# vool läbib kaitsmeid, kui need on korras (näiteks &amp;#039;&amp;#039;cb1&amp;#039;&amp;#039; on tõene). Lülitite puhul tähistab tõene ülemist asendit ja väär alumist asendit, skeemilt on näha kuidas vool neid sel juhul läbib.&lt;br /&gt;
# kui juhtmes on vool, siis sellega otse ühendatud lamp põleb (ja vastupidi, põleva lambi puhul on vool juhtmes).&lt;br /&gt;
# kui juhtmes on vool, siis selle küljes olevas seinakontaktis on vool - sama kehtib ka vastupidises suunas.&lt;br /&gt;
# juhul kui kaks juhet on omavahel lüliti või töötava kaitsmega ning ühes pole voolu, ei saa ka teises olla voolu.&lt;br /&gt;
# kui lamp on kustu või seinakontaktis pole voolu, siis ei saa ka nende küljes olevas juhtmes olla voolu.&lt;br /&gt;
&lt;br /&gt;
[[Image:Iti0210_eldomain.png|300px|right|elektriskeem]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;(pilt (c) D. Poole, A. Mackworth; [https://artint.info])&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Küsimused testimiseks&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# Väline vool on olemas (&amp;#039;&amp;#039;outside_power&amp;#039;&amp;#039;) ning kaitse 2 on korras (&amp;#039;&amp;#039;cb2&amp;#039;&amp;#039;). Tõesta, et pistikus &amp;#039;&amp;#039;p2&amp;#039;&amp;#039; on vool.&lt;br /&gt;
# Väline vool on, kaitse 1 (&amp;#039;&amp;#039;cb1&amp;#039;&amp;#039;) on korras. Lüliti 1 (&amp;#039;&amp;#039;s1&amp;#039;&amp;#039;) on alumises asendis ja lüliti 2 (&amp;#039;&amp;#039;s2&amp;#039;&amp;#039;) ülemises asendis. Tõesta, et lamp &amp;#039;&amp;#039;l1&amp;#039;&amp;#039; ei põle.&lt;br /&gt;
# Väline vool on olemas, lülitid &amp;#039;&amp;#039;s1&amp;#039;&amp;#039; ja &amp;#039;&amp;#039;s2&amp;#039;&amp;#039; on samas asendis, näiteks ülemises. Lamp &amp;#039;&amp;#039;l1&amp;#039;&amp;#039; ei põle. Tõesta, et kaitse 1 (&amp;#039;&amp;#039;cb1&amp;#039;&amp;#039;) on katki/välja lülitunud.&lt;br /&gt;
&lt;br /&gt;
Meil tuleb teha:&lt;br /&gt;
&lt;br /&gt;
* reeglid, mis kirjeldavad, kuidas elektriskeem töötab&lt;br /&gt;
* faktid (iga küsimuse kohta eraldi).&lt;br /&gt;
* lause, mida hakatakse tõestama (tõestajale ette anda vastasmärgiga).&lt;br /&gt;
&lt;br /&gt;
Kuna reeglid peavad olema KNK (&amp;#039;&amp;#039;CNF&amp;#039;&amp;#039;) kujul, siis kasuta vajaduse korral teisendamiseks http://logictools.org/prop.html - nupp &amp;quot;Build&amp;quot; ja vali kõrvalt &amp;quot;clause normal form&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Iti0210]]&lt;/div&gt;</summary>
		<author><name>PriitJ</name></author>
	</entry>
</feed>