مفهوم زمان در بسیاری از فعالیت هایی که هوشمندی دارند نهفته است . معمولا ً این فعالیت ها بیشتر دنیای واقعی را هدف قرار می دهد که محیطی است پویا . حقایق و پدیده های درون آن در بستر زمان رخ می دهند . درک و احساس انسان از این محیط پویا نیز به شدت با مفهوم زمان آمیخته شده است . همه چیز با توجه به قید زمانی آن بررسی می شود و اتفاقات با توجه به قید زمان به هم مرتبط می شوند ، مثلا ً قبل از ، بعد از ، در مدت و ... چیزها در یک حالت باقی می مانند تا وقتی در زمان مشخص رویدادی رخ دهد و به حالت دیگر منتقل شوند . زمان به نظر چیزی می آید که تمام رویدادهای جهان ما را به هم مرتبط می کند .
با توجه به اینکه زمان یکی از ویژگی های اساسی در دنیای ما است ، چرا از آن در نرم افزارها استفاده نشود ؟ به نظر می رسد نرم افزارهای هوشمند می بایست بعدی به نام و با مفهومی مانند زمان را به اطلاعاتی که نگهداری و پالایش می کنند بیافزایند . این ویژگی منجر به تغییر اطلاعات در مدت زندگی سیستم خواهد بود و می بایست بتواند علت تغییرات را شرح دهد .
وقتی به بخشهای مختلف نرم افزار هوشمند توجه می کنیم ، استفاده از زمان در هر کدام می تواند منجر به بهبود کارایی شود ، برای مثال :
  • تشخیص پزشکی : اگر نرم افزار تشخیص بیماری بتواند نحوه تغییر بیماری در طول زمان را بررسی کند می تواند نسخه بهتری به بیمار ارائه کند . همچنین در مدت درمان ، می تواند میزان تاثیر داروها را مشاهده کرده و از نتیجه کلی درمان در تشخیص های دیگر استفاده کند .
  • برنامه ریزی تولید : تنظیم خط تولید کارخانجات یکی از مسائلی است که زمان می تواند در آن نقش مهمی داشته باشد . اگر نرم افزار بتواند به شکل بهینه زمان کار هر کدام از خطوط را محاسبه و تنظیم نماید سود کارخانه بالا خواهد رفت .
  • پردازش زبان طبیعی : تقریبا ً تمامی جملاتی که انسانها استفاده می کنند دارای زمان است ، گذشته ، حال و آینده و یا ترکیبی از همه ! . نرم افزاری که می خواهد زبان طبیعی را پردازش کند می بایست بتواند درکی از زمان رخ داد جملات داشته باشد تا بتواند ترتیب و توالی و ارتباط آنها را ترسیم کند و از روی این زمانها نتیجه گیری مورد نظر را انجام دهد .
با توجه به همه این مزایا ، همچنان خیلی از سیستم های استنتاجی امروزی زمان را نادیده می گیرند .

استفاده از زمان در سیستم های موجود

چند راه کار برای پیاده سازی زمان در سیستم های موجود می توان ذکر کرد
  • ایجاد قوانین برای تفسیر گذشته یا آینده : با استفاده از دانشی که از اطلاعات ذخیره شده داریم ، می توان مکانیزمهایی برای پیش بینی اتفاقات ایجاد کرد . رخدادهایی که برای آینده پیش بینی می شوند در اطلاعات قبلی اعمال می شوند و نتیجه آنها به عنوان اطلاعات جدید ذخیره می شود . با همین روش می توان گذشته ی اطلاعات را نیز بازسازی کرد .
  • یادگیری قوانین حاکم بر طبیعت : با استفاده از قوانین حاکم بر طبیعت ، مثلا ً جوش آمدن آب در 100 درجه می توان برخی رخدادهایی که در آینده با توجه به اطلاعات موجود در سیستم رخ خواهند داد را پیش بینی نموده و نتیجه آنها را در سیستم ذخیره کنیم .

مشخصات زمان

تعریف های بسیاری برای زمان وجود دارد . هر دانشمندی از دیدگاه علمی که در آن تخصص دارد درباره زمان بحث کرده است . در اینجا ما زمان را در استنتاج های منطقی داخل می کنیم . برای این کار باید تصورات خود را از زمان قانونمند کرده و برای نمایش آن و استنتاج توسط زمان ابزارهای مورد نیاز را ایجاد کنیم .
این ابزارها گاهی توسط ایجاد توسعه هایی در منطق های پیشین و گاهی توسط ارائه راه کارهای کاملا ً جدید پیشنهاد شده اند . در همین راستا تقسیم بندی های مختلفی برای زمان ذکر شده است که عبارتند از :
  • زمان مطلق است یا وابسته : آیا زمان به خودی خود وجود دارد و در حال جلو رفتن است یا اینکه زمان را باید به عنوان یک ویژگی از رویدادها در نظر بگیریم .
  • زمان محدود است یا نا محدود : آیا زمان مورد بررسی ما بدون حد و مرز است و از خیلی قبل وجود داشته و تا ابد ادامه خواهد داشت یا در مساله که می خواهیم در آن استنتاج بکنیم زمان دارای محدوده است ؟
  • زمان پیوسته است گسسته ؟ آیا دنیایی که در نظر می گیریم دارای زمانهایی کاملا ً گسسته است که به شکل اعداد صحیح می توان آنها را شمرد یا نه ماهیتی پیوسته دارد . اگر گسسته است ، آیا می توان بین اجزای آن زمان دیگری فرض کرد ؟ چند تفسیر برای پیوستگی و گسستگی ذکر شده است :
    • عده ای زمان را تشکیل شده از لحظه ها دانستند (instances) و با تعریف فضایی به شکلی که بینهایت لحظه با رابطه ترتیب جزئی < بین آنها برقرار باشد ، روابط زمانی را تعریف کردند . (اگر جایی کپی می کنید منبع را هم ذکر کنید !)مشکل این روش تعریف بازه ها است و اینکه در واقعیت ما بیشتر با بازه هایی از زمان سر و کار داریم نه لحظه ها .
    • گروه دیگری زمان را به شکل بازه های زمانی تعریف کردند (intervals) که منجر به ساخت روش محاسباتی به نام Interval calculus شد . در این نوع ، روابط منطقی مانند A before B يا A meets B به عنوان اپراتورهای منطقی تعریف شدند .

    • در روش دوم امکان تعریف بعضی وقایع نیست مانند اتفاقی که راس ساعت مشخص بوقوع بپیوندند . برای جبران این نقصان از مفهوم جدیدی به نام moment استفاده شد که به یک بازه بسیار کوچک گفته می شود .
  • زمان دارای انشعاب است یا خیر ؟ از زمان فعلی که در آن هستیم می توان آینده های مختلفی را تصور کرد یا فقط یک آینده برای زمان فعلی وجود دارد .


استفاده از زمان در منطق

در ادامه استفاده از زمان در منطق را از دیدگاه بررسی می کنیم . دیدگاه اول سیر تکامل استفاده از زمان در منطق را بررسی می کند و دیدگاه دوم توسعه هایی که قابل استفاده در منطق هستند را شرح می دهد .

دیدگاه اول

زمان به عنوان یک آرگومان : یکی از ساده ترین روشهایی که برای استفاده از زمان در منطق می توان به کار برد ، استفاده از آرگومانی از جنس زمان در predicate ها در منطق مرتبه اول است ، مانند happy(hamed,1 April) . این نوع استفاده از زمان در توابع فیزیکی بسیار پر کاربرد است .

در این توسعه برای استفاده از زمان ، تعریف دقیق از محدوده زمان و نحوه بررسی آرگومان مربوطه نقش کلیدی دارد . اگر کامپایلر زبان منطقی نتواند مفهوم زمان ذکر شده را پیدا کند دچار مشکل خواهد شد . برای مثال کامپایلر در اولین مرحله باید بتواند تفاوت بین آرگومان های غیر زمانی و زمانی را تشخیص دهد سپس بتواند  تقدم و تاخر زمانی آرگومانها را پیدا کند .

مهمترین مزیت روش آرگومانی استفاده از همان قوانین و ابزارهای منطق مرتبه اول برای استنتاج است . در این روش دیگر نیازی به هیچ توسعه اضافی برای استنتاج وجود ندارد .

برای تعریف رابطه بین زمانها از نماد > استفاده می شود و به معنی تقدم و تاخر زمانی است .

Modal Temporal Logic : یکی دیگر از روشهایی که برای استفاده از مفهوم زمان در منطق پیشنهاد شده استفاده از MTL است . در این شکل توسعه هایی برای منطق پیشنهاد شد که با استفاده از آنها مفاهیم زمانی بیان می شود . این توسعه ها زبان را پیچیده تر می کند و احتیاج به کامپایلر قوی تری دارد . شرح توسعه های جدید عبارتند از :

F φ= φ is true in some future time
P φ= φ is true in some past time
G φ= φ is true in every future time
H φ= φ is true in every past time
این توسعه ها به همراه رابطه تعدی ابزار خوبی برای استفاده از زمان در منطق را ایجاد می کند . برای مثال F Rich(Hamed)به این معنی است که "در آینده در یک زمانی حامد پول دار خواهد شد" و
 P(F Rich(Hamed)) به این شرح است که "پول دار شدن حامد در آینده اتفاق افتاده است" . همانطور که مشخص است بیان کردن این مفاهیم در منطق مرتبه اول بدون استفاده از این توسعه ها غیر ممکن است . همچنین بیان جملات با استفاده از MTL راحت تر از TA است ، برای مثال حامد در آینده پول دار خواهد شد در روش TA عبارتست از :

در حالی که در MTL خیلی راحت تر بیان می شود . در این روش دو سطح از بیان وجود دارد ، یکی سطح کاربر است که برنامه منطقی را تولید می کند ، وی در سطح MTL برنامه خود را طراحی می کند "اگر جایی کپی می کنید منبع را هم ذکر کنید !" اما برای تجزیه تحلیل منطقی ، سطح MTL می بایست به سطح پایین تری تبدیل شود . این تبدیل که کار دشواری است باعث می شود از نظر کارایی این روش دچار مشکل شود و برای تفسیرهای پیچیده بسیار زمان بر باشد و منابع زیادی مصرف شود .
در شکل زیر تمامی اپراتورهایی که برای MTL طراحی شده است را مشاهده می کنید .


توسعه هایی برای راحتی بیان :
به غیر از روش آرگومان و MTL می توان با استفاده از برخی predicate ها زمان را به روشی آسان تر برای کاربر تعریف کرد . در این حالت از predicateی به نام >قید زمانی ,  جمله مستقل از زمان TRUE<می توان استفاده کرد که آرگومان اول طی مدت آرگومان دوم درست است برای مثال TRUE<Happy(hamed),1April> .
مشکلی که این روش دارد تعریف دقیق آرگومان زمان است . در مثال قبل این سوالها قابل بیان است
  • حامد در طول روز خوشحال است ؟
  • حامد فقط مدتی از آن روز خوشحال است ؟
  • حامد کل April خوشحال بوده ، که 1هم جزو آن است ؟
آرگومانهای زمانی دارای مشکلی به نام Temporal Occurrence Pattern هستند . این مشکل از نحوه تعریف نوع رخداد آرگومان زمان ناشی می شود که سه سوالی که نمونه اش ذکر شد نشان دهنده ابهام در تعریف زمان است .
یک نمونه دیگر از توسعه هایی که برای راحتی بیان ذکر شده HOLDS است . بدین معنی که در مدت زمان T ، عبارت p صحیح می باشد .


نمونه دیگر INCOMPATIBLE است که برای بیان دو رخدادی که همزمان نمی توانند رخ دهند کاربرد دارد .


Predicate دیگری که برای راحتی بیان ایجاد شده است CAUSES است . از این predicate برای بیان رخدادهایی که با هم رابطه علت و معلول دارند می توان استفاده کرد .



دیدگاه دوم

در این دیدگاه روشهایی بیان می شود که ساده سازی هایی در آن انجام شده تا بتوان از آنها در نرم افزارهای منطقی استفاده کرد .

Linear Temporal Logic : در این روش ، زمان ، گسسته مانند دنباله ای از اعداد صحیح فرض می شود . همانطور که پیش تر دیدیم ، آینده را می توان به شکل انشعابی یا خطی دید ، در روش LTL آینده خطی است . یعنی برای زمان حال فقط یک آینده قابل تصور است .
اپراتورهایی که برای LTL تعریف شده عبارتست از :

به ترتیب عبارتند از :
  • Next یا بعدی : بدین معنی که عبارت مورد نظر دقیقا ً در اولین زمان بعد از حال درست باشد . تعریف رسمی برای Next عبارتست از :
 
  • All یا همه : به این معنی که عبارت مورد نظر در کلیه زمانهای آینده درست باشد .
 
  • Some یا تعدادی : به این معنی که عبارت مورد نظر در بعضی از زمانهای آینده درست باشد . تعریف رسمی :
 
  • Until : به این معنی است که عبارت اول درست است تا زمانی که عبارت دوم درست شود .
 
برای مثال :
 
اگر در زمان حال بلیط و پاسپورت وجود دارد ، در زمان بعدی سوار هواپیما نمی توان بود و کل این عبارت برای همه زمانهای آینده درست است .
 
اگر درخواستی ارسال شده باشد ، در زمانی در آینده توسط گیرنده دریافت خواهد شد و این عبارت برای همه زمانهای آینده درست خواهد بود .
 
اگر شخصی به دنیا آمده باشد ، زنده است تا وقتی که بمیرد .
 
کسی که در قرعه کشی برنده شود ، در زمانهای بعد از برنده شدن ثروتمند خواهد بود .
M اگر در شرایط زیر صدق کند مدل خواهد بود .
 

که   مجموعه قابل شمارش از اتمهاست و  که نگاشتی از مجموعه اعداد طبیعی (زمان) به مجموعه یی از گزاره ها می باشد .
روابط کلاسیک در اپراتورهای LTL درست هستند .


Computation Tree Logic : این روش بسیار شبیه روش LTL است بیشترین تفاوتی وجود دارد در نگاه آن به آینده است . هنگامی که آینده ی زمان حال دارای چند انشعاب باشد و "اگر جایی کپی می کنید منبع را هم ذکر کنید !" بتوان چندین آینده را برای اکنون تصور کرد از این روش استفاده می شود . CTL دو اپراتور بیشتر از LTL دارد که از ترکیب هر دوی این اپراتورها با LTL استفاده می شود.

 
فرض کنید در نقطه شروع قرار داریم ، می خواهیم درستی عبارتی را در تمامی انشعاب های آینده مشخص کنیم . در این حالت از اپراتور A استفاده می شود . اگر بخواهیم مشخص کنیم که درستی عبارت در بعضی از مسیرهای آینده برقرار است از E استفاده می شود . به طور خلاصه :
  • A : برای همه مسیرها
  • E : وجود دارد مسیری که
به عنوان مثال مفهوم عبارت زیر 
 

این چنین است : این همیشه درست است که ، اگر P درست باشد ، آنگاه وجود دارد مسیری در آینده که در زمانی از آن q درست باشد .

سیستم های انتقالی

یکی از مهمترین کاربردهای منطق Temporal در سیستم هایی است که به نحوی بر اساس رویدادهایی از یک حالت به حالت دیگر منتقل می شوند . مثلا ً کامپیوتر آسانسور باید در یک تصمیم گیری منطقی با توجه به حالت فعلی و درخواست های رسیده حالت بعدی خود را انتخاب کرده و به سمت آن حرکت کند .
سیستم های انتقالی با یک سه تایی نمایش داده می شوند M = (S,R,L)
  • S: مجموعه حالت ها
  • R : رابطه دودویی بین حالت ها
  • L : تابع برچسب زنی که در هر کدام از حالت ها گزاره های درست را مشخص می کند .
برای مثال در شکل زیر سیستم داری سه حالت است و در هر حالت تعدادی از متغیر ها True ارزیابی می شوند که عناوین آنها در L آمده است . برای حرکت از هر حالت به حالت دیگر هم قوانین مشخصی دارد که در R مشخص شده .


 
با استفاده از منطق Temporal می توان درستی حالت های مختلفی که سیستم می تواند در آنها قرار بگیرد را سنجید . برای مثال در شکل زیر یک سیستم انتقالی مشخص شده است . می خواهیم بدانیم آیا اگر در حال حاضر در حالت S0 باشیم ، عبارت زیر درست ارزیابی خواهد شد یا مقدار آن false خواهد بود .
 

مفهوم عبارت فوق این است که : اگر هم اکنون در S0 باشیم ، آیا مسیری وجود دارد که حالت بعدی آن شامل p نباشد ؟ دو حالت بعدی S0 ، گره های S1 و S2 هستند که هیچ کدام p ندارند ، پس عبارت فوق به True ارزیابی می شود .
 


منابع
  1. A survey on Temporal Reasoning in AI , Llus Vila
  2. Formal Methods , Lecture III: Linear Temporal Logic , Alessandro Artale
  3. Wikipedia
  4. The temporal logic CTL , A gentle introduction , F. Raimondi
  5. Temporal Logic Tutorial , Edsko de Vries 2006
اگر جایی کپی می کنید منبع را هم ذکر کنید !

Gravatarhossein
يکشنبه ساعت 18:22 , 30/8/1389
thanks
Gravatarحمید
يکشنبه ساعت 14:30 , 13/6/1390
ممنون
Gravatarhossein
يکشنبه ساعت 14:47 , 27/9/1390
چه جالب ولی بنظر من یه جاهاییش رو میشه عوض کرد !چون مغز انسان گسسته عمل میکنه نه پیوسته (البته در برخی موارد) !
نام :   
ايميل :      اين سايت از سيستم گراواتر استفاده می کند ، اگر در گراواتر دارای کد کاربری هستيد می توانيد از آن آدرس ايميل استفاده کنيد.  
وب سايت :   
ديدگاه :   
عدد زير را وارد کنيد :
  


  پيام شما بعد از بازبينی افزوده خواهد شد.