پیشنویس:لیست تفاوت
![]() | این یک پیشنویس مقاله است. این یک مقالهٔ در دست ساخت است و ویرایش در آن توسط همگان آزاد است. لطفاً پیش از انتشار آن بهعنوان یک مقالهٔ زندهٔ ویکیپدیایی، مطمئن شوید که سیاستهای اصلی محتوایی در آن رعایت شدهباشند. یافتن منابع: گوگل (کتابها · اخبار · روزنامهها · آکادمیک · تصاویر آزاد · ارجاعات وپ) · اخبار آزاد · جیاستور · نیویورک تایمز · کتابخانه وپ آخرین بار در ۲۰ ساعت پیش توسط Amirufc (بحث | مشارکتها) ویرایش شدهاست. (روزآمدسازی)
|
در علوم کامپیوتر، اصطلاح لیست تفاوت به ساختار دادهای اشاره دارد که فهرستی را با عملیات الحاق O(1) کارآمد و تبدیل به لیست پیوندی در زمان متناسب با طول آن نشان میدهد. لیستهای تفاوت را میتوان با استفاده از توابع درجه یک یا با استفاده از یکسانسازی پیادهسازی کرد. اینکه آیا یک لیست تفاوت کارآمدتر از سایر نمایشهای لیست است به الگوهای استفاده بستگی دارد. اگر یک الگوریتم با به هم پیوستن لیستهای کوچکتر، که خود با به هم پیوستن فهرستهای کوچکتر ساخته شدهاند، فهرستی بسازد، آنگاه استفاده از فهرستهای تفاوت میتواند با «مسطح کردن» محاسبات ساخت فهرست، عملکرد را بهبود بخشد.
پیادهسازی با استفاده از توابع[ویرایش]
یک لیست تفاوت f یک تابع تک آرگومان الحاقی L است که وقتی یک لیست پیوندی X به عنوان آرگومان داده میشود، یک لیست پیوندی حاوی L که به X اضافه شده است را برمیگرداند. الحاق لیستهای تفاوت به عنوان ترکیب تابع اجرا میشود. محتویات ممکن است با استفاده از f [] بازیابی شوند.[۱]
این پیادهسازی معمولاً در زبانهای برنامهنویسی تابعی مانند Haskell استفاده میشود، اگرچه میتوان از آن در زبانهای امری نیز استفاده کرد.
به عنوان توابع، لیستهای تفاوت، نمایشی از لیستها بهعنوان مونوئید یا بهطور خاصتر مونوئید تبدیل آنها ناشی از ضرب چپ هستند.
نمونههایی از استفاده در نوع ShowS در Prelude of Haskell و در کتابخانه لیست تفاوت دونالد بروس استوارت برای Haskell هستند.[۲]
پیادهسازی با استفاده از یکسانسازی[ویرایش]
اجرای دیگری در زبان برنامهنویسی منطقی Prolog از متغیرهای یکسانسازی استفاده میکند.[۳] یک لیست تفاوت یک جفت OpenList-Hole است که در آن اولین عنصر OpenList لیستی است که شامل یک متغیر یکسانسازی نامحدود (حفره) است و عنصر دوم Hole مرجعی به سوراخ است.
منابع[ویرایش]
- ↑ A Novel Representation of Lists and Its Application to the Function "Reverse" by John Hughes (1986)
- ↑ Difference Lists in Haskell (programming language)
- ↑ Open Lists and Difference Lists in Prolog Retrieved 2019-02-17