پرش به محتوا

الگوریتم جستجو: تفاوت میان نسخه‌ها

از ویکی‌پدیا، دانشنامهٔ آزاد
محتوای حذف‌شده محتوای افزوده‌شده
Gh haeri (بحث | مشارکت‌ها)
Gh haeri (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
خط ۱: خط ۱:

__TOC__
==مقدمه==
==مقدمه==
در علوم کامپیوتر و ریاضیات ، یک الگوریتم جستجو، الگوریتمی است که یک مساله را به عنوان ورودی می گیرد و بعد از ارزیابی کردن راه حل های ممکن، یک راه حل برای آن مساله برمی گرداند.مجموعه ی راه حل های ممکن برای یک مساله را فضای جستجو می نامند.بعضی از الگوریتم ها که با عنوان الگوریتم ها ی ناآگاهانه شناخته می شوند الگوریتم هایی هستند که از متد های ساده ای برای جستجوی فضای نمونه استفاده می کنند.در حالی که الگوریتم ها ی آگاهانه با استفاده روش هایی مبتنی بر دانش در باره ی ساختار فضای جستجو ، می کوشند تا زمان جستجو را کاهش دهند.
در علوم کامپیوتر و ریاضیات ، یک الگوریتم جستجو، الگوریتمی است که یک مساله را به عنوان ورودی می گیرد و بعد از ارزیابی کردن راه حل های ممکن، یک راه حل برای آن مساله برمی گرداند.مجموعه ی راه حل های ممکن برای یک مساله را فضای جستجو می نامند.بعضی از الگوریتم ها که با عنوان الگوریتم ها ی ناآگاهانه شناخته می شوند الگوریتم هایی هستند که از متد های ساده ای برای جستجوی فضای نمونه استفاده می کنند.در حالی که الگوریتم ها ی آگاهانه با استفاده روش هایی مبتنی بر دانش در باره ی ساختار فضای جستجو ، می کوشند تا زمان جستجو را کاهش دهند.
خط ۱۵: خط ۱۵:
==جستجوی آگاهانه==
==جستجوی آگاهانه==
در یک جستجوی آگاهانه ، از نوع خاصی از مسائل به عنوان راهنما استفاده می شود.یک گونه ی خوب یک جستجوی آگاهانه با کارایی قابل توجهی نسبت به جستجوی ناآگاهانه به وجود می آورد. الگوریتم های برجسته ی کمی از جستجوی آگاهانه ی یک لیست وجود دارد. یکی از این الگوریتم ها hash table با یک تابع hash که برمبنای نوع مساله ای که دردست است می باشد.بیشتر الگوریتم های جستجوی آگاهانه ،بسطی از درخت ها هستند.همانند الگوریتم های ناآگاهانه ، این الگوریتم ها برای گراف ها نیز می توانند به کار روند.
در یک جستجوی آگاهانه ، از نوع خاصی از مسائل به عنوان راهنما استفاده می شود.یک گونه ی خوب یک جستجوی آگاهانه با کارایی قابل توجهی نسبت به جستجوی ناآگاهانه به وجود می آورد. الگوریتم های برجسته ی کمی از جستجوی آگاهانه ی یک لیست وجود دارد. یکی از این الگوریتم ها hash table با یک تابع hash که برمبنای نوع مساله ای که دردست است می باشد.بیشتر الگوریتم های جستجوی آگاهانه ،بسطی از درخت ها هستند.همانند الگوریتم های ناآگاهانه ، این الگوریتم ها برای گراف ها نیز می توانند به کار روند.
==جستجوی خصمانه==

در یک بازی مثل شطرنج، یک درخت بازی شامل تمام حرکات ممکن توسط هر دو بازیکن و نتایج حاصل از ترکیب این حرکات وجود دارد، و ما می توانیم این درخت را جستجو کرده و موثرترین استراتژی برای بازی را بیابیم. این چنین مسائلی دارای مشخصه ی منحصر به فردی هستند.برنامه های بازی های رایانه ای ، و همچنین فرم های هوش مصنوعی مثل برنامه ریزی ماشین ها، اغلب از الگوریتم های جستجو مثل [[الگوریتم minimax ]] (مى نيميم مجموعه اى از ماکزيمم ها) ، [[ هرس کردن درخت جستجو]] و [[هرس کردن آلفا-بتا]]استفاده می کنند.
==منابع==
==منابع==
* [http://en.wikipedia.org/w/index.php?title=Search_algorithm الگوریتم های جستجو] {{نشان زبان|en}}
* [http://en.wikipedia.org/w/index.php?title=Search_algorithm الگوریتم های جستجو] {{نشان زبان|en}}

نسخهٔ ‏۱۵ مهٔ ۲۰۰۹، ساعت ۱۷:۴۰

مقدمه

در علوم کامپیوتر و ریاضیات ، یک الگوریتم جستجو، الگوریتمی است که یک مساله را به عنوان ورودی می گیرد و بعد از ارزیابی کردن راه حل های ممکن، یک راه حل برای آن مساله برمی گرداند.مجموعه ی راه حل های ممکن برای یک مساله را فضای جستجو می نامند.بعضی از الگوریتم ها که با عنوان الگوریتم ها ی ناآگاهانه شناخته می شوند الگوریتم هایی هستند که از متد های ساده ای برای جستجوی فضای نمونه استفاده می کنند.در حالی که الگوریتم ها ی آگاهانه با استفاده روش هایی مبتنی بر دانش در باره ی ساختار فضای جستجو ، می کوشند تا زمان جستجو را کاهش دهند.

جستجوی ناآگاهانه

یک الگوریتم جستجوی ناآگاهانه الگوریتمی است که به ماهیت مساله کاری ندارد.همین طور می توانند به طور عمومی طراحی شوند و از همان طراحی برای محدوده ی عظیمی از مسائل استفاده کنند، این امر نیاز به طراحی انتزاعی دارد. که این چنین الگوریتم هایی دارند این است که اغلب فضای جستجو بسیار بزرگ است و نیازمند زمان زیادی (حتی برای نمونه های کوچک) می باشد.از این رو برای بالا بردن سرعت پردازش غالبا از الگوریتم های آگاهانه استفاده می کنند.

جستجوی لیست

الگوریتم های جستجوی لیست شاید از ابتدایی ترین انواع الگوریتم های جستجو باشند.هدف آن پیدا کردن یک عنصر از مجموعه ای از کلید هاست(ممکن است شامل اطلاعات دیگری مرتبط با آن کلید نیز باشد). ساده ترین این الگوریتم ها ، جستجوی خطی است که هر عنصر از لیست را با عنصر مورد نظر مقایسه می کند. زمان اجرای این الگوریتم از (O(n است وقتی که n تعداد عناصر در لیست باشد. اما می توان از روش دیگری استفاده کرد که نیازی به جستجوی تمام لیست نباشد.جستجوی دودویی اندکی از جستجوی خطی است .زمان اجرای آن از(O(lgn است.این روش برای لیستی با تعداد داده ی زیاد بسیار کار آمد تر از روش جستجوی خطی است.اما در این روش لیست باید قبل از جستجو مرتب شده باشد.جستجوی میان یابی برای داده های مرتب شده با تعداد زیاد و توزیع یکنواخت ، مناسب تر از جستجوی دودویی است.زمان اجرای آن به طور متوسط ((O(lg(lgn است ولی بدترین زمان اجرای آن (O(n می باشد. الگوریتم graver الگوریتم پله ای است که برای لیست های مرتب نشده استفاده می شود. Hash table نیز برای جستجوی لیست به کار می رود. به طور متوسط زمان اجرای ثابتی دارد.اما نیاز به فضای اضافه داشته و بدترین زمان اجرای آن از(O(n است.

جستجوی درختی

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

جستجوی گراف

بسیاری از مسائل در نظریه ی گراف می تواند با الگوریتم ها ی پیمایش درخت حل شوند، مثل الگوریتم دیکسترا ، الگوریتم kruskal ، الگوریتم نزدیک ترین همسایه و الگوریتم prim. می توان این الگوریتم ها را توسعه یافته ی الگوریتم های جستجوی درختی دانست.

جستجوی آگاهانه

در یک جستجوی آگاهانه ، از نوع خاصی از مسائل به عنوان راهنما استفاده می شود.یک گونه ی خوب یک جستجوی آگاهانه با کارایی قابل توجهی نسبت به جستجوی ناآگاهانه به وجود می آورد. الگوریتم های برجسته ی کمی از جستجوی آگاهانه ی یک لیست وجود دارد. یکی از این الگوریتم ها hash table با یک تابع hash که برمبنای نوع مساله ای که دردست است می باشد.بیشتر الگوریتم های جستجوی آگاهانه ،بسطی از درخت ها هستند.همانند الگوریتم های ناآگاهانه ، این الگوریتم ها برای گراف ها نیز می توانند به کار روند.

جستجوی خصمانه

در یک بازی مثل شطرنج، یک درخت بازی شامل تمام حرکات ممکن توسط هر دو بازیکن و نتایج حاصل از ترکیب این حرکات وجود دارد، و ما می توانیم این درخت را جستجو کرده و موثرترین استراتژی برای بازی را بیابیم. این چنین مسائلی دارای مشخصه ی منحصر به فردی هستند.برنامه های بازی های رایانه ای ، و همچنین فرم های هوش مصنوعی مثل برنامه ریزی ماشین ها، اغلب از الگوریتم های جستجو مثل الگوریتم minimax (مى نيميم مجموعه اى از ماکزيمم ها) ، هرس کردن درخت جستجو و هرس کردن آلفا-بتااستفاده می کنند.

منابع


پیوند های خارجی

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy