<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=A_nyelv_v%C3%A9grehajt%C3%A1si_mechanizmusa_%28redukci%C3%B3s_l%C3%A9p%C3%A9s%2C_visszal%C3%A9p%C3%A9s%29</id>
	<title>A nyelv végrehajtási mechanizmusa (redukciós lépés, visszalépés) - Laptörténet</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=A_nyelv_v%C3%A9grehajt%C3%A1si_mechanizmusa_%28redukci%C3%B3s_l%C3%A9p%C3%A9s%2C_visszal%C3%A9p%C3%A9s%29"/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=A_nyelv_v%C3%A9grehajt%C3%A1si_mechanizmusa_(redukci%C3%B3s_l%C3%A9p%C3%A9s,_visszal%C3%A9p%C3%A9s)&amp;action=history"/>
	<updated>2026-04-07T12:18:22Z</updated>
	<subtitle>Az oldal laptörténete a wikiben</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=A_nyelv_v%C3%A9grehajt%C3%A1si_mechanizmusa_(redukci%C3%B3s_l%C3%A9p%C3%A9s,_visszal%C3%A9p%C3%A9s)&amp;diff=137918&amp;oldid=prev</id>
		<title>Unknown user: Új oldal, tartalma: „{{GlobalTemplate|Infoalap|PrologElm2}}  * fejezetek: 3.2.2, 3.5.1  ==3.2.2 Végrehajtási algoritmus== A végrehajtási algoritmus két pillére: a mintaillesztés és …”</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=A_nyelv_v%C3%A9grehajt%C3%A1si_mechanizmusa_(redukci%C3%B3s_l%C3%A9p%C3%A9s,_visszal%C3%A9p%C3%A9s)&amp;diff=137918&amp;oldid=prev"/>
		<updated>2012-10-21T20:09:43Z</updated>

		<summary type="html">&lt;p&gt;Új oldal, tartalma: „{{GlobalTemplate|Infoalap|PrologElm2}}  * fejezetek: 3.2.2, 3.5.1  ==3.2.2 Végrehajtási algoritmus== A végrehajtási algoritmus két pillére: a mintaillesztés és …”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Új lap&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{GlobalTemplate|Infoalap|PrologElm2}}&lt;br /&gt;
&lt;br /&gt;
* fejezetek: 3.2.2, 3.5.1&lt;br /&gt;
&lt;br /&gt;
==3.2.2 Végrehajtási algoritmus==&lt;br /&gt;
A végrehajtási algoritmus két pillére: a mintaillesztés és a visszalépéses mélységi keresés.&lt;br /&gt;
&lt;br /&gt;
A mintaillesztés alaplépése a redukciós lépés, mely során a bemenetre érkező célsorozatok első célját kíséreljük meg egyesíteni a klóz fejével.&lt;br /&gt;
Siker esetén a klóz törzsét az első cél helyébe rakjuk. Két kifejezés egyesíthető, ha a bennük lévő változók helyébe tetszőleges kifejezést helyettesítve a két kifejezés azonossá tehető.&lt;br /&gt;
&lt;br /&gt;
Ha egy változó többször is előfordul, akkor minden előfordulását azonos kifejezésere kell cserélni.&lt;br /&gt;
&lt;br /&gt;
===Redukciós lépés===&lt;br /&gt;
Bemenete egy célsorozat és egy klóz, először elkészítjük a klóz másolatát, minden változóját szisztematikusan lecserélve új változókra, ez az ismételt  felhasználáshoz (rekurzió) nélkülözhetetlen. Ezután megkísérlejük a célsorozat első hívását egyesíteni a megadott fejjel (link=egyesítési algoritmus). Siker esetén a keletkezett behelyettesíteéseket elvégezzük a klóz belsejében és a maradék célsorozaton. Végül a törzset rakjuk az első hívás helyébe.&lt;br /&gt;
&lt;br /&gt;
# A klózt lemásoljuk, minden változót szisztematikusan új változóra cserélve. &lt;br /&gt;
# A célsorozatot szétbontjuk az első hívásra és a maradékra. &lt;br /&gt;
# Az első hívást helyettesítjük a klózfejjel. &lt;br /&gt;
# A szükséges behelyettesítéseket elvégezzük a klóz törzsén és a célsorozat maradékán. &lt;br /&gt;
# Az új célsorozat: a klóztörzs és utána a maradék célsorozat. &lt;br /&gt;
# Ha a hívás és a klózfej nem egyesíthető, akkor a redukciós lépés meghiúsul. &lt;br /&gt;
&lt;br /&gt;
===Végrehajtási algoritmus===&lt;br /&gt;
Célsorozat futása az adott prolog programra vonatkozatva. Eredménye lehet siker (változók behelyettesítésével járhat) vagy meghiúsulás (nem törtnéneik változó behelyettesítés)&lt;br /&gt;
* beépítettt eljárás hívása:&amp;lt;br&amp;gt;&lt;br /&gt;
	  végrehajtása során siker esetén behelyettesítés után új célsorozatott készít az első hívás elhagyásával. Sikertelenség visszalépést eredményez.&lt;br /&gt;
* felhasználói eljárás hívása:&amp;lt;br&amp;gt;&lt;br /&gt;
	  első olyan klóz megkeresése, melyre a redukciós lépés sikeresen lefut. Ha nincs ilyen, visszalépés.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Visszalépés történik tehát akkor, ha&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* egy beépített eljárás meghiúsul, vagy &lt;br /&gt;
* ha egy felhasználói eljáráshívást nem lehet (több) klózfejjel egyesíteni (nincs olyan klózfej, amelyre a redukciós lépés sikerrel futna le) &lt;br /&gt;
&lt;br /&gt;
Amennyiben nincs visszalépés az új célsorozat feldolgozása kezdődik meg.&lt;br /&gt;
Visszalépés esetén visszatér a legutolsó sikeres redukciós lépéshez (minden azóta történt behelyettesítés érvényét veszti) és új klóz illezstésével  próbálkozik, meghiúsulás esetén további visszalépés következik.&lt;br /&gt;
* sekély visszalépés: egy eljárás klózából uagyanezen eljárás egy későbbi klózába kerül a vezérlés&lt;br /&gt;
* mély visszalépés: egy már lefutott eljárás belsejébe térünk vissza és új megoldásokat keresünk.&lt;br /&gt;
Ha nincs hova vissazlépni a teljes hívás meghiúsul.&lt;br /&gt;
Ha a visszalépés során üres lesz a célsorozat a hívás sikeres lesz.&lt;br /&gt;
&lt;br /&gt;
==3.5.1 Teljes végrehajtási algoritmus==&lt;br /&gt;
# &amp;lt;i&amp;gt;(Kezdeti beállítások:)&amp;lt;/i&amp;gt; A verem üres, CS := célsorozat.&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;i&amp;gt;(Beépített eljárások:)&amp;lt;/i&amp;gt; Ha CS első célja beépített, akkor hajtsuk végre.&amp;lt;br&amp;gt;&lt;br /&gt;
** Ha sikertelen =&amp;gt; 6. lépés&lt;br /&gt;
** Ha sikeres, elvégezzük a behelyettesítéseket, CS-ből elhagyjuk az első hívást, =&amp;gt; 5. lépés.&lt;br /&gt;
# &amp;lt;i&amp;gt;(Klózszámláló kezdőértékezése:)&amp;lt;/i&amp;gt; I = 1.&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;i&amp;gt;(Redukciós lépés:)&amp;lt;/i&amp;gt; CS első hívásához tartozó eljárásdefinícióban N klóz van.&lt;br /&gt;
** Ha I &amp;gt; N =&amp;gt; 6. lépés&lt;br /&gt;
** Redukciós lépés az I-edik klóz és a CS célsorozat között.&lt;br /&gt;
** Ha sikertelen, akkor I := I+1, és =&amp;gt; 4. lépés.&lt;br /&gt;
** Ha I &amp;lt; N (nem utolsó), akkor vermeljük &amp;amp;lt;CS,I&amp;amp;gt;-t.&lt;br /&gt;
** CS := a redukciós lépés eredménye.&lt;br /&gt;
# &amp;lt;i&amp;gt;(Siker:)&amp;lt;/i&amp;gt; Ha CS üres, akkor sikeres vég, egyébként =&amp;gt; 2. lépés.&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;i&amp;gt;(Sikertelenség:)&amp;lt;/i&amp;gt; Ha a verem üres, akkor sikertelen vég.&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;i&amp;gt;(Visszalépés:)&amp;lt;/i&amp;gt; Ha a verem nem üres, akkor leemeljük a veremből &amp;amp;lt;CS,I&amp;amp;gt;-t, I := I+1, és =&amp;gt; 4. lépés.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Infoalap]]&lt;/div&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
</feed>