ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Унификация ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΈΠ· Π³ΠΈΠΏΠΎΡ‚Π΅Π·

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Унификация ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² позволяСт ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π²Ρ‹ΡΠΊΠ°Π·Ρ‹Π²Π°Π½ΠΈΡΠΌ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° ДСвиса ΠΈ ΠŸΠ°Ρ‚Π½Π΅ΠΌΠ° ΠΈ Ρ€Π΅Π·ΠΎΠ»ΡŽΡ†ΠΈ. Если унификация Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°, Ρ‚ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ общая интСрпрСтация для этих ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ». Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Ρ‹ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ для Π½ΠΈΡ… ΠΎΠ±Ρ‰ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ — ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° бэктрСкинга (backtracing — ΠΎΡ‚ΠΊΠ°Ρ‚, ΠΈΠ»ΠΈ поиск с Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠΌ, ΠΈΠ»ΠΈ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Унификация ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΈΠ· Π³ΠΈΠΏΠΎΡ‚Π΅Π· (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. Унификация — ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° сравнСния ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΈ ΠΏΠΎΠΈΡΠΊ подстановки-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚.

ΠŸΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ P (tv …, tn) ΠΈ Π  (1ΠΈ …, /") (?, ΠΈ /, Ρ‚Π΅Ρ€ΠΌΡ‹) сравнимы, Ссли сущСствуСт ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ подстановка для всСх ΠΏΠ°Ρ€ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (?, ^ /,).

Алгоритм ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ[1]

Для Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€ Π΄ΠΈΠ·ΡŠΡŽΠ½ΠΊΡ‚ΠΎΠ² формируСтся мноТСство согласования: ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Ρ‹ Ρ‚Π΅Ρ€ΠΌΠΎΠ² ΠΈ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ся уравнСния.

Для ΠΏΠ°Ρ€Ρ‹ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² P (tv …, t") ΠΈ P (ll9 …, 1ΠΏ) мноТСство согласования задаСтся Π² Ρ„ΠΎΡ€ΠΌΠ΅ уравнСния {tx = /t,…, tn = /"}.

  • 1. Π’ ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ выполняСтся посимвольноС сравнСниС ΠΈ Π²Ρ‹ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ся ΠΏΠ°Ρ€Ρ‹ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… строк-Ρ‚Π΅Ρ€ΠΌΠΎΠ² с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΌΡ‹ΠΌ символом. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ tx — (подстановка Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, Ссли ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Π΅Ρ€ΠΌΠΎΠ² — пСрСмСнная ΠΈ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ частично ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ‚Π΅Ρ€ΠΌΠΎΠΌ.
  • 2. Если Ρ… — Ρƒ — ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌ Ρ…/Ρƒ для всСх Ρ… Π² ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΡΡ… мноТСства согласования; ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Ρ… = Ρƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅ согласования.
  • 3. Если Ρ… = Π° ΠΈ Π° — константа, Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌ Ρ…/Π° для всСх Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ Ρ… Π² ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΡ согласования.
  • 4. Если Ρ… = /(Π³/), Ρ… Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ t, Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ x/t = x/f (y) ΠΊΠΎ Π²ΡΠ΅ΠΌ уравнСниям.

ДопустимыС ΠΏΠ°Ρ€Ρ‹ согласования ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ подстановки[1]:

Унификация ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΈΠ· Π³ΠΈΠΏΠΎΡ‚Π΅Π·.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ сравнСнии Π  (Ρ…, f (x)),

p (yjm-

  • β€’ согласованиС подстановок для Ρ…Π³. {(Ρ…/Ρƒ), (Ρ…/Ρƒ/b)} Π²Ρ‹Π±Ρ€Π°Π½ΠΎ Ρ…/Π¬;
  • β€’ согласованиС подстановок для f (x): {f (b), f (y)/f (b)}, Π²Ρ‹Π±Ρ€Π°Π½ΠΎ (y/b);
  • β€’ P (b, f (b)) — ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚;
  • β€’ Π΄Π²Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ подстановки {Ρ…/Ρƒ, Ρƒ/b} ΠΈ ΠΈΡ‚оговая Π·Π°ΠΌΠ΅Π½Π° Ρ…/Π¬ — наибольший ΠΎΠ±Ρ‰ΠΈΠΉ ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π  (Π°, x, f (g (y)) ΠΈ P (z, f (z), f (u)):

  • β€’ Π²Ρ‹Π±Ρ€Π°Π½ΠΎ для (a, z): z/a
  • β€’ для (Ρ…, /(Π³)): {x/z, x/z/a, x/f (a)};
  • β€’ для (g (y), ΠΈ): {u/g (y)}
  • β€’ наибольший ΠΎΠ±Ρ‰ΠΈΠΉ ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ {z/a, x/f (a), u/g (y)}, послС ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π  (Π°, f (g (y))).

Π€ΠΎΡ€ΠΌΡƒΠ»Π° ΠΏΡ€ΠΈ ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π½Ρ‹Π΅ символы. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊ Ρ‚Π°ΠΊΠΈΠΌ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ссли выбранная подстановка ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΈΠ»ΠΈ Ρ‚Π΅Ρ€ΠΌ t свободСн для замСщСния.

Унификация ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² позволяСт ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π²Ρ‹ΡΠΊΠ°Π·Ρ‹Π²Π°Π½ΠΈΡΠΌ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° ДСвиса ΠΈ ΠŸΠ°Ρ‚Π½Π΅ΠΌΠ° ΠΈ Ρ€Π΅Π·ΠΎΠ»ΡŽΡ†ΠΈ. Если унификация Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°, Ρ‚ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ общая интСрпрСтация для этих ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ». Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Ρ‹ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ для Π½ΠΈΡ… ΠΎΠ±Ρ‰ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ — ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° бэктрСкинга (backtracing — ΠΎΡ‚ΠΊΠ°Ρ‚, ΠΈΠ»ΠΈ поиск с Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠΌ, ΠΈΠ»ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ поиска Π² Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ).

  • [1] Π“Ρ€ΠΈΠ½Ρ‡Π΅ΠΈΠΊΠΎΠ² Π”. Π’ΠŸΠΎΡ‚ΠΎΡ†ΠΊΠΈΠΉ Π‘. И. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ Ρ‚Сория Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² для программистов.
  • [2] Π“Ρ€ΠΈΠ½Ρ‡Π΅ΠΈΠΊΠΎΠ² Π”. Π’ΠŸΠΎΡ‚ΠΎΡ†ΠΊΠΈΠΉ Π‘. И. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ Ρ‚Сория Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² для программистов.
ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ