سی‌اچ‌آر

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

قوانین محدودیت و برخورد (به انگلیسی: Constraint Handling Rules) Chr، یک توسعه زبان برنامه نویسی توصیفی است، که در سال ۱۹۹۱ توسط تام فراویرث (به انگلیسی: thom frahwirth) معرفی شد. با وجود آن که اصالتاً برای توسعه (نمونه روسیه ی) سیستم‌های برنامه نویسی محدود طراحی شده بود chr بارشد زیادی به عنوان یک زبان برنامه نویسی همه منظوره سطح بالا مورد استفاده قرار می گیرد . دامنه‌های اولیه نرم‌افزار chr سیستم‌های منطقی مبتنی بر حدس، سیستم‌های چند عامله، پردازش زبان‌های طبیعی، کامپایل، زمان بندی، استدلال‌های زمانی – کلامی، ازمایش، برسی و سیستم‌های برای تایپ بود . هر چند chr یک ماشین تورنیگ کامل است، اغلبا به عنوان یک زبان برنامه نویسی مستقل مورد استفاده قرار نمی‌گیرد، بلکه برای گسترش یک زبان میز بان به وسیله محدودیت می پردازد . زبان‌های کنونی شامل پرولوگ، جاوا، هاسکل می شوند. که در بین آن‌ها پرولوگ عامه پسندترین زبان میز بان است و chr در بسیاری از نسخه‌ها ی پرولوگ قرار داده شده است یک برنامه chr، که گاه یک برسی کننده محدودیت نامیده می شود، ترکیبی از قوانین مفهومی، ساده سازی گسترش و ترکیبی از ساده سازی گسترش و اصل‌های محدودیت هاست . اندوخته محدودیت‌های یکچند مجموعهای است . بر خلاف prolog قوانین چند مفهومی اند و زمان اجرا مفهوم آن‌ها انتخاب شده و اجرا می شوند . تلاقی اغلب برنا مه‌های chr نیازمند آن اند که پروسه بازنویسی همه ریزی شود . در غیر این صورت یک مسئله ارضایحمدوصت نا معین و غیر قابل پیش بینی می باشد . ایجاد تلاقی معمولاً با پیروی از یه خصیصه زیر انجام می شود . یک برنامه chr محلا تلاقی است اگر همه جفت‌های بحران آن قابل اتصال باشند . یک برنامه chr تمام شدنی است اگر محاسبات نا محدود آن نباشد . یک برنامه تمام شدنی chr تلاقی است، اگر همه جفت‌های آن قابل اتصال باشند . مثال برنامه SWL_PROLOG زیر شامل ۴ قاعده chr میشود که یک برسی کننده برای کوچک تر مساوی را طراحی می کند .

- use_module(library(chr)).
- op(۵۰۰، xfx، leq).
- chr_constraint leq/۲.

٪ X leq Y means variable X is less-or-equal to variable Y

reflexivity @ X leq X <=> true. antisymmetry @ X leq Y ، Y leq X <=> X=Y. idempotence @ X leq Y \ X leq Y <=> true. transitivity @ X leq Y ، Y leq Z ==> X leq Z. قاعده اول که بازتابی نامیده می شود (نام قواعد اختیاری هستند ) یک قاعده یک طرفه ساده سازی است این قاعده محدودیت‌های با فرم A leg A را از انبار محدودیت‌ها حذف می کند . قاعده دوم، تقارنی یک قاعده ساده سازی هر طرف است . بین قاعده دو محدودیت معنایی leg را با یک محدودیت متناظر برابری عوض می کند از برسی شده تک سازه prolog . قواعد ساده سازی منجر به برابری منطقی می شوند . (همان طور که در آمده است ) قاعده سوم یک ترکیب ساده سازی و تولید است که نسخه‌های تکراری مشابه یک محدودیت یکسان را حذف می کند . این گونه قواعد معمولاً به دلیل معنا یی چند مجموعه ای chr نیاز ش د . قاعده اخر یک قاعده تولید است که محدودیت‌های مشابه را اضا فه می کند . قواعد تولید مفاهیم منطقی می شود . اجرا : اعمال کامل قواعد روی صف داده شده می شود . برای مثال اگر در خواست داده شده Aleg B ، B leg C، C leg A، باشد . قاعده تعدی A leg C را اضافه می کند . سپس اعمال متقارنی A leg C ، C leg A، با A=c جابه جا می شوند. حال قاعده متقارنی قابل اعمال بر قاعده دوم در خواست اصلی می شود . حال همه محدودیت‌های CHR حذف شده پس هیچ قاعده دیگری فابل اعمال نیست و جواب A=C ، B=C باز گردانده می شود .

منابع[ویرایش]

ویکی‌پدیای انگلیسی

مطالعهٔ بیشتر[ویرایش]