روش کار الگوریتم پریم چگونه است؟
الگوریتم پریم
این الگوریتم مرتب‌سازی درخت را که از یک یال شروع شده‌است، افزایش می‌دهد تا جایی که که همه رئوس وارد درخت شوند. الگوریتم پریم
الگوریتم پریم، الگوریتمی در نظریه گراف‌ها است که زیردرخت پوشای کمینه را برای یک گراف همبند وزن دار پیدا می‌کند یعنی زیرمجموعه‌ای از یال‌ها را در آن گراف می‌یابد که درختی را تشکیل می‌دهند که همه رئوس را شامل می‌شود در حالیکه مجموع وزن همه آن یال‌ها کمینه شده‌است. این الگوریتم در سال ۱۹۳۰ توسط ریاضیدانی به نام جارنیک داده شد و سپس در سال ۱۹۵۷ پریم، دانشمند علوم کامپیوتر آن را مستقل از جارنیک کشف کرد و در سال ۱۹۵۹ دایکسترا دوباره به آن دست یافت. از این رو این الگوریتم گاهی با نام الگوریتم DJP نیز شناخته می‌شود که برگرفته از اسامی دایکسترا، جارنیک و پریم است. پیمایش گراهام
این الگوریتم با در نظر گرفتن هر نقطه در آرایه مرتب شده پیش می‌رود. برای هر نقطه این موضوع را در نظر می‌گیرد که آیا حرکت از دو نقطه‌ای که قبلاً در نظر گرفته به این نقطه یک چرخش به چب بوده یا چرخش به راست. اگر چرخش به راست باشد به این معناست که نقطه دوم به آخر بخشی از بدنه محدب نمی‌باشد و باید حذف شود. این فرایند تا زمانی ادامه می‌یابد که مجموعه سه نقطه آخر چرخش به راست باشد. به محض اینکه با یک چرخش به چپ مواجه شود الگوریتم به سراغ نقطه بعدی در آرایه مرتب شده می‌رود. (اگر در هر مرحله سه نقطه در یک راستا باشند، ممکن است انتخاب شود یا دور انداخته شود چون در برخی برنامه‌ها لازم است همه نقاط روی مرز بدنه محدب پیدا شوند.
الگوریتم جستجو
روش‌های جستجوی ناآگاهانه عبارتند از:الگوریتم‌های جستجوی لیست شاید از ابتدایی‌ترین انواع الگوریتم‌های جستجو باشند. هدف آن پیدا کردن یک عنصر از مجموعه‌ای از کلید هاست (ممکن است شامل اطلاعات دیگری مرتبط با آن کلید نیز باشد). ساده‌ترین این الگوریتم‌ها، الگوریتم جستجوی ترتیبی است که هر عنصر از لیست را با عنصر مورد نظر مقایسه می‌کند. زمان اجرای این الگوریتم از (O(n است وقتی که n تعداد عناصر در لیست باشد. اما می‌توان از روش دیگری استفاده کرد که نیازی به جستجوی تمام لیست نباشد. جستجوی دودویی اندکی از جستجوی خطی است. زمان اجرای آن از(O(lgn است. این روش برای لیستی با تعداد دادهٔ زیاد بسیار کار آمد تر از روش الگوریتم جستجوی ترتیبی است. اما در این روش لیست باید قبل از جستجو مرتب شده باشد.جستجو با میان یابی برای داده‌های مرتب شده با تعداد زیاد و توزیع یکنواخت، مناسب تر از جستجوی دودویی است. زمان اجرای آن به‌طور متوسط ((O(lg(lgn است ولی بدترین زمان اجرای آن (O(n می‌باشد. الگوریتم graver الگوریتم پله‌ای است که برای لیست‌های مرتب نشده‌استفاده می‌شود. جدول درهم‌سازی نیز برای جستجوی لیست به کار می‌رود. به‌طور متوسط زمان اجرای ثابتی دارد. اما نیاز به فضای اضافه داشته و بدترین زمان اجرای آن از(O(n است. الگوریتم مؤلفه قوی مبتنی بر مسیر
این الگوریتم از الگوریتم جستجوی عمق اول و همچنین دو پشته برای نمایش مسیر P استفاده می‌کند. پشته S که شامل دنباله رأس‌های مسیر P است و پشته B که شامل کران‌های رأس‌های منقبض شده‌است. در این الگوریتم آرایه I نیز وجود دارد که هم اندیس پشته S را و هم شماره مؤلفه قویا همبند را ذخیره می‌کند. به عبارت دقیق تر این ارائه به صورت زیر تعریف می‌شود: یادگیری ماشین در بیوانفورماتیک
از آن‌جایی که ساختارهای سوم و چهارم وابستگی زیادی به ساختار دوم دارند، در زیرشاخهٔ پروتئومیک توجه زیادی به ساختار دوم می‌شود. به دست آوردن ساختار کامل و دقیق پروتئین فرایندی بسیار پیچیده و زمان‌گیر است. پیش از استفاده از روش‌های یادگیری ماشین، پژوهشگران سیستم‌های پیش‌بینی ساختار پروتئین را به صورت دستی پیاده‌سازی می‌کردند. امروزه روش‌های یادگیری ماشین با به دست آوردن خودکار ویژگی‌های داده به دقت ۸۴٪-۸۲ رسیده‌اند. در حال حاضر الگوریتم سرآمد در حوضهٔ پیش‌بینی ساختار دوم از سیستمی به نام DeepCNF استفاده می‌کند که بر اساس مدل شبکهٔ عصبی مصنوعی، به دقت ۸۴٪ در دسته‌بندی اسید آمینه‌های یک رشتهٔ پروتئین به دسته‌های مارپیچ، صفحه و سیم‌پیچ رسیده‌است. از لحاظ تئوری، حداکثر دقت قابل دستیابی در این مسئله برابر ۹۰٪-۸۸ است. الگوریتم آسانسور
حرکت آرم همیشه کمتر از دو برابر تعداد سیلندرهای کل است، برای هر دو گونه الگوریتم آسانسور، متغیرها مزیت داشتن اختلاف کوچک تر در زمان پاسخگوئی دارند. همچنین الگوریتم نسبتاً ساده است. اگر چه الگوریتم آسانسور همیشه بهتر از کوتاهترین جستجوی اولیه نیست، اما تا اندازه‌ای نزدیک تر به مقدار بهینه است. این منجر به اختلاف زیاد در زمان پاسخگوئی و همچنین فقدان می‌شود بالاخص زمانی که درخواست جدید به‌طور پیوسته قبل از درخواست‌های موجود سرویس دهی شود. تکنیک ضد فقدان می‌تواند به الگوریتم جستجوی کوتاه‌ترین زمان اولیه اعمال شود تا زمان پاسخگوئی بهینه را مورد ضمانت قرار دهد. روش تحلیل پرتال
سعی بر آن است که محلی که در آن ممان صفر است قبلاً پیش‌بینی شده و با فرض مفصلی بودن این نقاط سیستم به یک سیستم معین تبدیل گردد. هر اندازه محل مفصل پیش‌بینی شده دقیق تر باشد نتایج به واقعیت نزدیک تر خواهد بود.فرایندهای مدل‌سازی مربوط به آنالیز مدرن سازه‌ها مقایسه گراف اسپارس و چگال
به عنوان مثال در الگوریتم پریم با استفاده از داده ساختار هیپ دودوئی ساده و لیست مجاورت می‌توان زمان اجرا را به (O("E" log "V" رساند. الگوریتم پرکردن طوفانی
الگوریتم پرکردن طوفانی، که به نام دانه پر هم ترجمه شده، الگوریتم برای تعیین منطقهٔ متّصل به یک گره داده شده در یک آرایه چند بعدی است . این الگوریتم در برنامه‌هایی مانند نقاشی برای پر کردن نقاط بیت مپ و همچنین در بازی‌های مانند مین سوپر و ... برای پیده کردن قطعات کاربرد دارد. هنگامی که در یک تصویر برای پر کردن منطقه خاص محدود با یک رنگ استفاده شود، آن را نیز به عنوان مرز شناخته شده را پر می‌کند. کوییک پراپ
کوییک‌پراپ یک روش تکراری برای تعیین کمینه تابع هزینه یک شبکه عصبی مصنوعی است که از روش نیوتن الهام گرفته شده‌است. بعضی اوقات، این الگوریتم در گروه روش‌های یادگیری مرتبkszه دوم طبقه‌بندی می‌شود. این روش تقریب درجه دوم از گرادیان تکرار قبلی و گرادیان فعلی، که انتظار می‌رود نزدیک به کمینه تابع هزینه باشد، استفاده می‌کند با این فرض که تابع هزینه به صورت محلی تقریباً درجه دو باشد. این فرض تلاش می‌کند که تابع هزینه را به صورت یک سهمی رو به بالا توصیف کند که کمینه آن در راس سهمی جستجو می‌شود. این روش فقط به اطلاعات محلی نورون مصنوعی که به آن اعمال می‌شود نیاز دارد. مرحله formula_1-ام تقریب برابر است با: پس‌پرش (الگوریتم)
این روش پرش به عقب توسط پتریک پراسر (Patrick Prosser) در سال ۱۹۹۳ برای مطلوب‌سازی مشکلات زمان بن‌بست ارائه شده‌است. جستجو فرینگ
پس نسبتاً یک الگوریتم جست و جوی IDA* نیز داریم (:الگوریتمی که کوتاهترین مسیر را از یک گره مشخص شده تا هریک از گره‌های عضو مجموعه گره‌های هدف می‌یابد) که یک تابع جست و جوی بازگشتی عمق اول(DFS) از گره ریشه می‌سازد. هنگامی این الگوریتم متوقف می‌شود که یا گره هدف یافت شده یا به مقدار بیشینهٔ f برسیم. اگر بار اولی که به آستانهٔ بیشینهٔ f رسیدیم، گره هدف هنوز یافت نشده بود، آستانهٔ بیشینه افزایش میابد و الگوریتم دوباره تکرار شده و مجدداً جستجو می‌کند. الگوریتم فرینگ با استفاده از ساختمان داده‌ای که در آن یک یا دو لیست پیوندی جهت اشاره به قسمت‌های مختلف درخت جستجو به الگوریتم IDA* بهبود بخشیده است. لیست "now" حاوی مکان فعلیه اشاره گر و لیست "later" حاوی نقاط طی شده اشاره گر است. پس هنگام شروع از ریشهٔ درخت جستجو"now " شامل ریشه و " later" خالی است. سپس الگوریتم یکی از دو عمل زیر را انجام می‌دهد: - اگر "F " ریشه بیشتر از مقدار آستانه تعیین شدهٔ "F " باشد از لیست "now" حذف می‌شود و به انتهای لیست "later" الحاق شود به عبارتی ریشه را برای اشارهٔ بعدی نگه می‌داریم - اگر "F" برابر یا کمتر از آستانه بود، ریشه را حذف کرده و فرزندان آن را به ابتدای لیست " now" اضافه می‌کنیم در انتهای یک پیمایش اشاره‌گر مقدار آستانه " F "افزایش یافت، لیست " now " برابر با "later" و لیست "later " خالی می‌شود. یک تفاوت اصلی بین فرینگ و A* این است که در الگوریتم فرینگ محتوای لیست لزوماً چیده شده و به ترتیب نیستند. بر خلاف A* الگوریتم فرینج باید همان گره‌های قبلی را مجدداً رویت کند، اما هزینهٔ هر یک از این دیدارها مرتباً با بدترین حالت لگاریتمی زمان مرتب‌سازی لیست در A* مقایسه می‌شود. پریم
البته در موارد زیر هم کارائی دارد: الگوریتم دم
الگوریتم دم در اعداد بزرگتر از ۱۰ هم به درستی کار می‌کند و مشکلی ایجاد نمی‌کند ولی در عوض نیازمند یه کارکتر غیر عددی مانند X است (مثل طرح چک کردن رقم در الگوریتم ISBN 10-digit) الگوریتم آپریوری
اپریوری ، یک الگوریتم برای استخراج مکرر مجموعه‌های مورد و یادگیری قوانین مرتبط با پایگاه‌های داده رابطه‌ای است. با شناسایی موارد فردی مکرر در پایگاه داده و گسترش آنها به مجموعه اقلام بزرگتر و بزرگتر تا زمانی که آن مجموعه موارد به طور کافی در پایگاه داده ظاهر شود، ادامه می‌یابد. مجموعه‌های مکرر موارد تعیین شده توسط ایپرایوری می‌تواند برای تعیین قوانین ارتباطی که روندهای کلی در پایگاه داده را برجسته می‌کند، مورد استفاده قرار گیرد: این الگوریتم در حوزه‌هایی مانند تجزیه و تحلیل سبد بازار کاربرد دارد. بلاست
برای اجرای بلاست نیاز به دو دنباله می‌باشد یکی دنبالهٔ درخواستی یا مورد نظر و دیگری دنبالهٔ هدف یا دنباله‌های موجود در پایگاه داده‌ای از دنباله‌ها. بلاست زیر دنباله‌هایی از پایگاه داده را پیدا می‌کند که شبیه دنبالهٔ ورودی (query) باشند. معمولاً دنبالهٔ query بسیار کوچکتر از پایگاه داده است. به عنوان مثال query ممکن است هزار نوکلئوتیدی باشد در حالی که پایگاه داده از چندین بیلیون نوکلئوتید تشکیل شده باشد. ایدهٔ اصلی الگوریتم بلاست این است که به دنبال تطابقهای با بیشترین امتیاز بین query و پایگاه داده می‌گردد بر اساس تقریب زدن یک الگوریتم اکتشافی به اسم Smith-Waterman_algorithm. الگوریتم Smith-Waterman بسیار زمانگیر است از اینرو در بلاست از یک روش اکتشافی (heuristic) که البته دقت کمتری خواهد داشت استفاده می‌شود. اما در عوض ۵۰ بار سریعتر است. در زیر مراحل الگوریتم بلاست (پروتئین به پروتئین) به صورت خلاصه آورده شده است: الگوریتم مرتب‌سازی
در مقایسه با مرتب‌سازی ادغامی، معمولاً در دستگاه‌هایی که حافظه نهان (Cache) کمتری دارند، مرتب‌سازی هرمی سریع‌تر عمل می‌کند. از طرف دیگر مرتب‌سازی ادغامی چندین مزیت بر مرتب‌سازی هرمی دارد. از جمله این که پایدار است، موازی‌سازی آن بهتر صورت می‌گیرد و قابل پیاده‌سازی روی لیست پیوندی است. الگوریتم مرتب‌سازی هرمی مبنای ۳ نیز دقیقا شبیه الگوریتم مذکور است با این تفاوت که به جای یک هرم دودویی از یک هرم سه‌سه‌یی استفاده می‌کند. به این معنا که هر عنصر می‌تواند ۳ فرزند داشته باشد. پیاده‌سازی این الگوریتم مشکل است اما به تعداد ثابتی عمل مقایسه و جابجایی را کاهش می‌دهد. این روش حدود ۱۲% سریع‌تر از حالت معمولی مرتب‌سازی هرمی عمل می‌کند. تصویربرداری پراش منسجم
در رویکرد زو، یک تصویر الکترونی با وضوح پایین برای مکان‌یابی یک نانولوله استفاده می‌شود. تفنگ الکترونی گسیل میدانی پرتویی با پیوستگی و شدت بالا تولید می‌کند. اندازه پرتو به ناحیه نانو با دیافراگم کندانسور محدود شده است تا از پراکندگی تنها از یک بخش از نانولوله مورد نظر اطمینان حاصل شود. الگوی پراش در میدان دور با استفاده از صفحات تصویربرداری الکترونی با وضوح بیست و پنج ده هزارم آنگستروم ثبت می‌شود. با استفاده از یک روش معمولی بازسازی HIO تصویری با وضوح Å تولید می‌شود که در آن کایرالیته DWCNT (ساختار شبکه) می‌توان مستقیماً مشاهده کرد. Zuo دریافت که برای بهبود کیفیت تصویر نهایی، می توان با فازهای غیر تصادفی بر اساس یک تصویر با وضوح پایین از یک TEM شروع کرد. الگوریتم تطابق رشته‌ها
در این روش، با ساختن یکماشین محدود قطعی(deterministic) که رشته‌هایی را که حاوی رشتهٔ مطلوب مورد جستجو هستند، تشخیص می‌دهد. ساخت آن‌ها هزینه بر است اما بسیار سربع هستند. مثلاً DFA که در سمت راست نشان داده شده‌است کلمهٔ "MOMMY" را تشخیص می‌دهد.این شیوه در عمل برای جستجوی عبارات معمولی دلخواه، عمومیت داده می‌شود.  Knuth-Morris-Pratt یک ماشین محدود قطعی می‌سازد که پسوندی از رشتهٔ مورد نظر را جستجو کند کلید را از آخر در متن جستجو می‌کند تا بتواند در اکثر مواقع به اندارهٔ طول کلید در متن پرش کند. Baeza-Yates نگه می‌دارد که آیا کاراکترهای "j" قبلی پیشوندی از رشتهٔ مورد جستجو هستند یا نه، از این رو تطبیق پذیر با جستجوی رشته‌ای fuzzy می‌باشند. الگوریتم bitap کاربردی از روش Baeza-Yates' است. الگوریتم‌های سریع تر بر پایهٔ پیش پردازش متن کار می‌کنند. پس از ساخت نمایهٔ زیر رشته، مثلاً درخت پسوند یاآرایهٔ پسوند، رخدادهای یک الگو خیلی سریع یافت می‌شوند. به عنوان مثال، یک درخت پیشوند می‌تواند در زمان (Theta(m ساخته شود، و تمام formula_1 رخدادهای یک الگو می‌توانند در زمان (O(m+z یافت شوند (اگر اندازهٔ مجموعهٔ الفبا را یک ثابت در نظر بگیریم). همگذاری ازسرنو ترانسکریپتوم
زمانی که ژنوم مرجع موجود نیست، کیفیت contigهای همگذار شده باید تأیید شود. این تأیید یا از طریق مقایسه دنباله‌های تولید شده با readهایی که از آن‌ها ساخته شده‌است بدون نیاز به مرجع انجام می‌گیرد، یا با هم‌ردیفی دنباله‌های محافظت شدهٔ حوزهٔ ژن در mRNA ترانسکریپتوم، با ترانسکریپتوم یا ژنوم گونه‌های مربوطِ نزدیک به مرجع. ابزارهایی از جمله Translate و DETONATE امکان تحلیل آماری کیفیت همگذاری را با این متدهای توضیح داده شده فراهم می‌کنند. یک روش دیگر، طراحی پرایمرهای PCR (واکنش زنجیره‌ای پلیمراز) برای ترانسکریپت پیش‌بینی شده‌است، سپس باید با استفاده از cDNA تقویت و زیاد شوند. معمولاً، readهای کوتاه فیلتر می‌شوند و بیرون داده می‌شوند. دنباله‌های کوتاه (کمتر از ۴۰ آمینواسید) بعید است پروتئین‌های کاربردی را نشان دهند. جستجوی پرشی
این الگوریتم با چک کردن همه آیتم های "L"، جایی که l آرایه است و k عضو اعداد طبیعی و m اندازه بلوکی هست که در آن کلید را جستجو میکند و این الگوریتم ادامه میدهد این جستجو را تا زمانی که یک آیتم پیدا شود که از کلید جستجو بزرگتر باشد. در آن صورت از یک مرحله قبلش به اندازه m یکی یکی چک میکند و در صورت وجود کلید آن را پیدا میکند. الگوریتم‌های پوش محدب
کران پایین محاسباتی استاندارد به کمک مدل درخت تصمیمformula_3 می‌باشد که البته در این مدل تنها مقایسه انجام می‌شود و نه عملیات محاسباتی. به هر حال پوش محدب در این مدل نمی‌تواند محاسبه شود. مرتب‌سازی در مدلدرخت تصمیم جبری نیز از formula_3 می‌باشد که این مدل برای پوش محدب مناسبتر می‌باشد که در این مدل نیز به دست آوردن پوش محدب‌ها زمانی از formula_3 می‌خواهد. هر چند در مدل‌هایی که اجازه می‌دهند که اعداد سریعتر از formula_6 مرتب شودند، برای نمونه الگوریتم هایinteger sorting، پوش محدب نیز می‌تواند سریعتر محاسبه شود: الگوریتم پیمایش گراهام شامل یک مرحله سادهٔ مرتب‌سازی است که به دنبال مقداری کار اضافه که در زمان خطی انجام می‌شوند امده‌اند. جستجو و پیمایش ردیفی اول سطح
اگر در الگوریتم پیمایش عمقی به جای پشته یک صف در نظر بگیریم به الگوریتم جدیدی خواهیم رسیدکه BFS نام دارد.برای پیمایش کلیه گره‌ها گره آغاز را انتخاب می کنیم.در این روش بعد از دیدن هر گره کلیه فرزندان همان گره ملاقات شده و سپس فرزندان اولین فرزند گره اصلی و بعد فرزندان دومین فرزند گره اصلی و تا انتها پیش می‌رود. بنابراین روش کار این است که نخست دومین گره را ملاقات می کنیم و سپس کلیه فرزندان آن را ملاقات کرده و در انتهای صف قرار می دهیم و سپس از داخل صف اولین گره را برداشته و فرزندان آن را ملاقات کرده و به انتهای صف می افزاییم. Procedure BFS(v)  Visit(v)  AddQueue(v)  While Queue is not empty do  DeleteQueue(v)  For each w adjacent to v do  If not visited w then  Visit(w)  AddQueue(w)  Endif  Repeat  Repeat  end الگوریتم حل هزارتو
هنگامی که یک مارپیچ چند راه حل داشته باشد، ممکن است حل‌کننده بخواهد کوتاه‌ترین مسیر از ابتدا تا انتها را پیدا کند. یک الگوریتم ممکن کوتاه‌ترین مسیر را با پیاده‌سازی الگوریتم جستجوی اول سطح پیدا می‌کند. در حالی که الگوریتمی دیگر، الگوریتم جستجوی آ*، از روش‌های اکتشافی استفاده می‌کند. الگوریتم جستجوی سطح اول از یک صف استفاده می‌کند که خانه‌ها را به ترتیب بر اساس فاصلهٔ آن‌ها از ابتدا تا انتها بازدید می‌کند. هر خانهٔ بازدید شده باید اطلاعات مربوط به فاصلهٔ خودش از نقطهٔ شروع یا اینکه کدام یک از همسایگانش که به شروع نزدیک تر است باعث شده که به صف اضافه شود را نگه دارد. هنگامی که مکان انتهایی پیدا شود مسیر خانه‌ها بازمی‌گردیم تا به نقطهٔ شروع برسیم که این مسیر کوتاه‌ترین مسیر است الگوریتم بسته‌بندی هدیه
Jarvis(s) اگر تعداد نقاط مجموعه برابر با "n" و تعداد نقاط روی پوش محدب برابر با "h" باشد، پیچیدگی زمانی این الگوریتم از formula_3 است؛ زیرا برای هر نقطه p که عضو پوش محدب باشد باید زاویه قطبی formula_2 راًس دیگر نسبت به p، با هم مقایسه شوند که هر هر عملیات مقایسه از formula_5 است. چون h نقطه روی پوش محدب قرار دارند بنابراین زمان اجرا از formula_3 است. این الگوریتم در صورتی از لحاظ زمانی کارا خواهد بود که "n" عددی بزرگ نباشد یا اینکه "h" نسبت به "n" کوچک باشد. به عبارت دقیق‌تر اگر formula_7، این الگوریتم از الگوریتم پیمایش گراهام سریع تر است. در غیر این‌صورت این الگوریتم در مقایسه با سایر روش‌ها به‌طور مجانبی کُندتر خواهد بود که در نتیجه از الگوریتم‌های مشابه که زمان اجرای کمتری دارند استفاده می‌شود؛ مانند الگوریتم چان که زمان اجرای آن از formula_8 است. الگوریتم جستجوی پرتو محلی
BEAM = { start }; الگوریتم پی-۱ پولارد
ایده اصلی این است که توان را عددی با تعداد بسیار زیادی عامل اول در نظر بگیریم تا یک مضرب بزرگ از p-۱ شود؛ به‌طور کلی ضرب تمام توان‌هایی از اعداد اول را در نظر می‌گیریم که این توان‌های اول از یک عدد مانند "B" بیشتر نباشند. با یک عدد تصادفی "x" شروع می‌کنیم، و مکرراً آن را با formula_2 جایگزین می‌کنیم که "w" از همان توان‌های اعداد اول بدست می‌آید. در هر مرحله یا اگر ترجیح می‌دهید در مرحلهٔ آخر چک می‌کنیم که آیا ب. م. م ("x-1","n") مخالف ۱ است یا نه. پرولوگ
الگوریتم‌های Iterative (پشت سرهمی) می‌توانید به وسیلهٔ predicates بازگشتی به اجرا درآیند. سیستم‌های Prolog معمولاً به روش بهینه‌سازی معروفی به نام تماس دم (tco) پایبندند که ملتزم به بازگشت قطعی است و حتماً در این روش بهینه‌سازی می‌بایست به دم برسد. به همین خاطر در روش بازگشتی از یک پشته با یک نوع محدودیت بهره می‌گیرد و بدین وسیله می‌تواند حلقه‌های متعدد و بازگشتی را با اطمینان به بازگشت به جواب را جوابگو باشد. الگوریتم دم
عدد را رقم به رقم پردازش می‌کنیم: رقم عدد را با ستون و رقم موقت را با سطر مطابقت می‌دهیم و عدد مورد نظر را از جدول استخراج می‌کنیم. D*
این الگوریتم با تکرار عملیات انتخاب یک گره از لیست OPEN و ارزیابی آن کار می کند. سپس تغییرات گره را در همه گره های همسایه منتشر کرده و در لیست OPEN قرار می دهد. این فرایند انتشار "گسترش" نامیده می شود. برخلاف *A متعارف، که مسیر را از ابتدا تا انتها دنبال می کند، *D با جستجوی عقبگرد از گره هدف شروع می شود. هر گره توسعه یافته دارای یک "backpointer" است که به گره بعدی منتهی به هدف اشاره دارد و هر گره هزینه دقیق رسیدن به هدف را می داند. وقتی گره شروع گره ای است که در مرحله بعدی گسترش می یابد، الگوریتم به پایان میرسد و می توان با دنبال کردن نشانگرهای عقب("backpointers")، مسیر رسیدن به هدف را پیدا کرد. تریپ
برای درج کلید x در تریپ ابتدا یک اولویت تصادفی برای x تولید می‌کنیم و نامش را برای مثال y می‌گذاریم. سپس الگوریتم جستجو را برای کلید x به کار می‌گیریم، تا جایی را که باید این کلید درج شود پیدا شود. گره‌ای با این کلیدها می‌سازیم و در جای مربوطه درج می‌کنیم. سپس تا موقعی که این گره برابر ریشه درخت نشده و کلید اولویت کمتری (ترتیب هرم کمینه) نسبت به پدرش را دارد عمل دوران را در درخت انجام می‌دهیم. درخت پوشای کمینه
در این روش از یک رأس شروع می‌کنیم و کمترین یال (یال با کمترین وزن) که از آن می‌گذرد را انتخاب می‌کنیم. در مرحله بعد یالی انتخاب می‌شود که کمترین وزن را در بین یال‌هایی که از دو گره موجود می‌گذرد داشته باشیم. به همین ترتیب در مرحله بعد یالی انتخاب می‌گردد که کمترین وزن را در بین یالهایی که از سه گره موجود می‌گذرد داشته باشد. این روال را آنقدر تکرار می‌کنیم تا درخت پوشای بهینه حاصل شود. باید توجه کرد که یال انتخابی در هر مرحله در صورتی انتخاب می‌شود که در گراف دور ایجاد نکند. تفاوت روش پریم با روش کراسکال در این است که گراف حاصل در مراحل میانی تشکیل درخت پوشای بهینه در روش پریم همیشه متصل است ولی در الگوریتم کراسکال در آخرین مرحله قطعاً متصل است. while latest_addition = remove minimum in Q update adjacent in Q, order by min_distance تعیین تعداد خوشه‌ها در یک مجموعه داده
نظریه نرخ اعوجاج برای انتخاب "k" به نام روش «پرش» نامگذاری شده‌است که تعداد خوشه‌ها را برای دستیابی به حداکثر راندمان و همزمان به حداقل رساندن خطا توسط استانداردهای اطلاعات نظری تعیین می‌کند. استراتژی الگوریتم این است که اعوجاج منحنی تولید می‌کند برای داده‌های ورودی در حال اجرا توسط استاندارد الگوریتم خوشه بندی مانند k-means برای تمام مقادیر "k" بین ۱ و "n "و اعوجاج را (در زیر توضیح داده شده) و در نتیجه خوشه بندی مشخص می‌کند. اعوجاج منحنی معیاری منفی برای تعیین ابعاد داده‌است. روش «پرش» مقادیری را برای انتخاب درست "k خروجی می‌دهد." بزرگترین پرش به عنوان بهترین انتخاب است. پس‌پرش (الگوریتم)
در عمل این الگوریتم هم‌زمان مشغول انجام محاسبه‌های گفته شده در بالا و نیز بررسی کردن سازگاری xk+1=ak+1 است. الگوریتم جستجوی سطح اول
الگوریتم از ریشه شروع می‌کند (در گراف‌ها یا درخت‌های بدون ریشه رأس دلخواهی به عنوان ریشه انتخاب می‌شود) و آن را در سطح یک قرار می‌دهد. سپس در هر مرحله همهٔ همسایه‌های رئوس آخرین سطح دیده شده را که تا به حال دیده نشده‌اند بازدید می‌کند و آنها را در سطح بعدی می‌گذارد. این فرایند زمانی متوقف می‌شود که همهٔ همسایه‌های رئوس آخرین سطح قبلاً دیده شده باشند. همچنین در مسائلی که حالات مختلف متناظر با رئوس یک گراف‌اند و حل مسئله مستلزم یافتن رأس هدف با خصوصیات مشخصی است که در عین حال در بین همهٔ رئوس هدف با آن خصوصیات به ریشه نزدیک‌ترین باشد، جستجوی سطح اول به صورت غیرخلاق عمل می‌کند. بدین ترتیب که الگوریتم هر دفعه همهٔ همسایه‌های یک رأس را بازدید کرده و سپس به سراغ رأس بعدی می‌رود و بنابراین گراف سطح به سطح پیمایش خواهد شد. این روند تا جایی ادامه می‌یابد که رأس هدف پیدا شود یا احتمالاً همهٔ گراف پیمایش شود. براساس آنچه گفته شد پیاده‌سازی هوشمندانهٔ الگوریتم آنقدر مؤثر نخواهد بود. الگوریتم استور- واگنر
هر یک از فازهای الگوریتم استور-واگنر به الگوریتم پریم شباهت زیادی دارد.  formula_22 روش‌های بهینه‌سازی در مسائل مهندسی برق قدرت
برای حل یک مسئلهٔ بهینه‌سازی، الگوریتم SA ابتدا از یک جواب اولیه شروع می‌کند و سپس در یک حلقه تکرار به جواب‌های همسایه حرکت می‌کند. اگر جواب همسایه بهتر از جواب فعلی باشد، الگوریتم آن را به عنوان جواب فعلی قرار می‌دهد (به آن حرکت می‌کند)، در غیر این صورت، الگوریتم آن جواب را با احتمال (exp(-ΔE/T به عنوان جواب فعلی می‌پذیرد منشأ الگوریتم تبرید شبیه‌سازی شده، کارهای کریک پاتریک و کرنی و همکارانشان در سال‌های ۱۹۸۳ و ۱۹۸۵ است. الگوریتم جستجو
بسیاری از مسائل در نظریهٔ گراف می‌تواند با الگوریتم‌ها ی پیمایش درخت حل شوند، مثل الگوریتم دیکسترا، الگوریتم کروسکال، الگوریتم نزدیک‌ترین همسایه و الگوریتم پریم. می‌توان این الگوریتم‌ها را توسعه یافتهٔ الگوریتم‌های جستجوی درختی دانست. پرایمر (زیست‌شناسی مولکولی)
به منظور این که مرحله اتصال پرایمرها (annealing) طی فرایند PCR به درستی اتفاق بیفتد نیاز است تا هر دو پرایمر (forward و reverse) دمای ذوب مشابهی داشته باشند. توالی پرایمرها باید منحصر به فرد بوده و دربردارنده قطعه DNAی مورد نظر باشند. همچنین باید تا حد ممکن امکان اتصال اشتباه به توالی‌های مشابه وجود نداشته باشد. یک روش متداول که به منظور طراحی پرایمر به کار می‌رود بلاست (BLAST) است. در این روش همه نواحی که امکان اتصال پرایمر به آن‌ها وجود دارد، قابل مشاهده است. وراثت اولویت
در محاسبات بی‌درنگ، وراثت اولویت شیوه ای است برای از بین بردن وارونگی نامحدود اولویت. با استفاده از این شیوه ی برنامه نویسی، الگوریتم زمانبندی پروسه باعث افزایش اولویت یک پروسه (مثلا P) تا سطح حداکثر اولویت هر گونه پروسه ی دیگری می شود که منتظر منبعی است که P روی آن یک قفل منبع دارد (اگر بالاتر از اولویت اولیه P باشد). ایده ی اساسی پروتکل وراثت اولویت این است که زمانیکه یک کار، یک یا بیش از یک کار با اولویت بالاتر را مسدود می کند، اولویت اولیه ی خود را نادیده می‌گیرد و ناحیه ی بحرانی خود را در یک سطح اولویت بالاتر اجرا می کند. پروسه، بعد از اجرای ناحیه بحرانی خویش و آزاد کردن قفل های خود، به سطح اولویت اولیه ی خود باز می گردد. سه کار زیر را در نظر بگیرید: الگوریتم آپریوری
الگوریتم اپریوری، توسط Agrawal و Srikant در سال 1994 پیشنهاد شد. اپریوری طوری طراحی شده است که در معاملات پایگاه داده (مانند مجموعه‌ای از اقلام خریداری شده توسط مشتریان، یا جزئیات فراوانی وب سایت یا آدرس IP) عمل کند . پیش‌بینی ساختار پروتئین
الگوریتم قابل توجه بعدی در این حوزه روش GOR (برگرفته از نام سه دانشمندی که در این حوزه کار می‌کردند) است که بر مبنای تئوری اطلاعات کار می‌کند. این روش نسبت به روش قبلی از تکنیک احتمالاتی قوی‌تر استنتاج بیزی استفاده می‌کند. این تکنیک علاوه بر احتمال رخداد هر آمینواسید در هر ساختار از احتمال شرطی رخداد هر آمینواسید به شرط همسایه‌هایش نیز استفاده می‌کند. این روش نسبت به الگوریتم کو-فاسمن دقیق‌تر و حساس‌تر است. دقت اولین نوع از الگوریتم GOR برابر با ۶۵ درصد است. این روش مارپیچ‌های آلفا را بهتر از صفحات بتا تشخیص می‌دهد. الگوریتم آپریوری
الگوریتم تلاش می‌کند تا زیرمجموعه‌هایی از آیتم‌ها را که حداقل بین C مجموعه آیتم مشترک است، بیابد. آپریوری یک الگوریتم پایین به بالا است، آنگونه که در هر مرحله یک آیتم به زیرمجموعه‌های مکرر اضافه می‌شود (تولید کاندید). مجموعه کاندیدها روی داده مورد ارزیابی قرار می‌گیرند. شرط خاتمه الگوریتم، عدم وجود شیوه توسعه موفق دیگری است. الگوریتم مرتب‌سازی
ساده‌ترین الگوریتم مرتب‌سازی از لحاظ پیاده‌سازی می‌باشد. این الگوریتم هر بار دو خانه مجاور را باهم مقایسه کرده، اگر ترتیب آن‌ها درست نبود، جای آن‌ها را عوض می‌کند و یک خانه جلو می‌رود. به این ترتیب پس از یک بار پیمایش آرایه یک خانه در جای درست خود قرار می‌گیرد و این کار تا زمانی که لیست کاملاً مرتب شود ادامه می‌یابد. دلیل نام‌گذاری آن نیز از این رو است که حرکت یک کلید به سمت مکان نهایی آن شبیه پویش حباب به بالای مایع است. الگوریتم پریم
این الگوریتم را به‌طور خلاصه می‌توان چنین شرح داد: مرتب‌سازی جزئی
این الگوریتم بهینه تر از الگوریتم‌های قبلی است. این الگوریتم بر اساس مرتب‌سازی سریع و مرتب‌سازی ادغامیمی‌باشد. در مرتب‌سازی سریع، دیگر نیازی به قسمت بازگشتی مرتب بر اساس قسمت بندی نیست. یعنی زمانی که قسمت بندی در موقعیت یا بعد از آن قرار گیرد، ما تنها بر روی قسمت چپ بازگشتی می‌زنیم. این الگوریتم مرتب‌سازی سریع جزئی نیز نامیده می‌شود و تنها به O(n + k log k) زمان نیاز دارد، و در عمل نسبتاً بهینه می‌باشد. به خصوص اگر هنگامی که در مقایسه با کوچک باشد، برای انتخاب پایه از مرتب‌سازی انتخابی استفاده شود. با این حال در بدترین حالت، که مربوط به انتخاب پایه بد است، هم پیچیدگی زمان رخ می‌دهد و زمان آن بسیار بد است. پراش پودر
نسبت به سایر روش‌های آنالیزی، پراش پودر امکان تجزیه و تحلیل سریع و غیر مخرب مخلوط‌های چند جز را بدون نیاز به تهیه نمونه گسترده فراهم می‌کند. این امکان را به آزمایشگاه‌های سراسر دنیا می‌دهد تا مواد ناشناخته را سریع تجزیه و تحلیل کرده و خصوصیات مواد را در زمینه‌هایی مانند متالوژی، کانی‌شناسی، شیمی، پزشکی قانونی، باستان‌شناسی، فیزیک ماده متراکم و علوم بیولوژیکی و دارویی انجام دهند. شناسایی با مقایسه الگوی پراش با یک استاندارد شناخته شده یا با یک پایگاه داده مانند پرونده پراش پودر مرکز بین‌المللی داده‌های پراش (PDF) یا پایگاه ساختاری کمبریج (CSD) انجام می‌شود. پیشرفت در سخت‌افزار و نرم‌افزار، به ویژه بهبود اپتیک و آشکارسازهای سریع، توانایی تحلیلی این روش را به ویژه نسبت به سرعت تجزیه و تحلیل به طرز چشمگیری بهبود بخشیده‌است. فیزیک بنیادی که این روش بر اساس آن ساخته شده‌است، دقت بالایی را در اندازه‌گیری فاصله‌های بین سیاره ای، گاهی اوقات به کسرهای یک آنگستروم، ارائه می‌دهد، در نتیجه شناسایی معتبری را در پرونده‌های جنایی و سایر موارد اجرای قانون فراهم می‌کند. توانایی تجزیه و تحلیل مواد چند فازی همچنین امکان تجزیه و تحلیل نحوه تعامل مواد را در یک ماتریس خاص مانند یک قرص دارویی، یک صفحه مدار، یک جوش مکانیکی، یک نمونه هسته زمین‌شناسی، سیمان و بتن یا یک رنگدانه موجود در یک نقاشی تاریخی فراهم می‌کند. این روش از نظر تاریخی برای شناسایی و طبقه‌بندی مواد معدنی مورد استفاده قرار می‌گرفته‌است، اما می‌تواند تقریباً برای هر ماده، حتی آمورف استفاده شود، تا زمانی که یک الگوی مرجع مناسب شناخته شده یا ساخته شود. پس‌پرش (الگوریتم)
منطق این نوع پرش به عقب که در گراف‌ها بکار برده می‌شود به این صورت است که یک پرش امن می‌تواند به وسیلهٔ چک کردن این نکته که کدام متغیر از سری x1,…،xk تناسب دارد با متغیرهای xk+1,xk+2,… که توسط گره‌های برگ معرفی می‌شوند. برای هر گره برگ و هر متغیر xi ی که ایندکس‌های i>formula_1 نامناسب ناخته شده‌اند، ایندکسهایی که کوچکتر یا مساوی k که در محدوده xi هست می‌تواند به عنوان محلی برای پیدا کردن پرش امن از آن‌ها استفاده نمود. به صورت دقیقتر، زمانی‌که تمامی مقادیر برای xk+1 مورد بررسی قرار گرفت مجموعه‌ای از ایندکس‌های متغیرهایی که باعث به وجود آمدن راه حل نهایی نمی‌شود شناسایی شده و بنابراین این نتیجه گرفته می‌شود که از ملاقات زیر درخت xk+1 هیچ راه حل قابل توجهی بدست نخواهد آمد. در این مواقع الگوریتم می‌تواند پرش به عقب به باارزشترین ایندکس موجود در مجموعه را انجام دهد. جستجو با چند گام
تحلیل الگوریتم پوشش پیشوند
اگر اندازه پایگاه داده های ساخته‌شده کوچک شود به افزایش کارایی الگوریتم کمک می‌کند. به این منظور هنگام ساخت هر پایگاه‌داده تصویری از یک هرس داده‌ها با استفاده از بررسی‌های الگوریتم آپریوری استفاده می‌کنیم. به این روش تصویر دولایه(bi level projection) می‌گویند. برنامه‌نویسی پویا
چه زمانی الگوریتم‌های برنامه‌نویسی پویا کارا هستند؟ پرسپترون
الگوریتم پرسپترون یک الگوریتم تکرار شونده است، به این صورت که در ابتدا بردار وزن formula_4 و بایاس formula_7 به نحوی مقداردهی می‌شوند و سپس در هر مرحله، الگوریتم با توجه به نقاطی که درست دسته‌بندی نشده‌اند مقادیر وزن formula_4 و بایاس formula_7 را تغییر می‌دهد تا این نقاط به درستی دسته‌بندی شوند. اگر نقاط داده‌شده به صورت خطی تفکیک‌پذیر نباشند الگوریتم پرسپترون پایان نمی‌یابد اما در صورتی که نقاط خطی تفکیک‌پذیر باشند الگوریتم در تعداد متناهی مرحله پایان می‌یابد. الگوریتم پرکردن طوفانی
این الگوریتم برای اولین بار در سال ۱۹۸۱ در ویکام برای سیستم پردازش تصویر تولید شده توسط سیستم ویکام در دسترس قرار گرفت . پر کردن سکیلینگ الگوریتم می‌تواند با خطوط پر سرعت. به بررسی اطراف هر پیکسل با استفاده از پشته، آن را بازرسی کرده و خطوط همسایه (قبل و بعد( را برای پیدا کردن بخش‌های مجاور که ممکن است در پیمایش پر از استفاده کنیم. بهره وری : هر پیکسل یک بار چک می‌شود. الگوریتم جستجوی عمق اول
مشخص است که الگوریتم، هر یال در گراف بدون جهت را دقیقاً دو بار (یک بار به به هنگام بررسی هر یک از دو انتها) و هر یال در گراف جهت‌دار را دقیقاً یک بار پیمایش می‌کند. همچنین هر رأس قابل دسترسی از ریشه دقیقاً یک بار بازدید خواهد شد. بنابراین پیچیدگی زمانی جستجوی عمق اول (|O(|V|+|E خواهد بود. برنامه‌ریزی حرکت
در الگوریتم های پاداش محور فرض می‌شود ربات در هر حالت (موقعیت و حالت درونی) می‌تواند بین اعمال (حرکت) مختلف انتخاب کند. اگر چه نتیجه عمل به طور دقیق مشخص نیست. به عبارت دیگر درآمد پاره ای مبتنی بر تصادف و پاره مبتنی بر انتخاب ربات است. ربات وقتی به هدف می رسد پاداش مثبت دریافت می کند و وقتی به مانع برخورد می کند پاداش منفی می گیرد. این سری از الگوریتم ها درصدد یافتن مسیری هستند که مجمموع پاداش های آتی را بیشینه نماید. فرایند های تصمیم گیری مارکوف یک چارچوب ریاضی بسیار معروف است که در بسیاری از الگوریتم های پاداش محور استفاده می شود. مزیت استفاده از فرایند های تصمیم گیری مارکوف نسبت به سایر الگوریتم های پاداش محور این است که مسیر بهینه را مشخص می کند. عیب فرایند های تصمیم گیری مارکوف این است که ربات را به انتخاب عمل در بین مجموعه ای متناهی از اعمال محدود می کند و بنابراین مسیر نرم (هموار) نیست. فرایند های تصمیم گیری مارکوف فازی یک بسط (توسعه) بر فرایند های تصمیم گیری مارکوف است که با کمک سیستم های استنتاج فازی مسیر را هموار می کند پس‌پرش (الگوریتم)
از طریق الگوریتم زیر می‌توان به‌طور کامل زمان استفاده از پس‌پرش از گره‌هایی که بازدید نکردیم و این گره‌ها را کنار گذاشته‌ایم را به‌طور کامل متوجه شوید: زمانی‌که از یک گره به عقب بازمی‌گردیم مجموعه‌ای از متغیرها که درمحدودیت خود این گره و فرزندان آن وجود دارند و حتی والد والدین گره می‌توانند به عنوان کاندیدهای گره مقصد برای پرش مطرح شوند. در هر گره داخلی، مجموعه‌ای از متغیرها حفظ شده‌است. هر زمان که مجموعه‌ای از متغیرها از یکی از فرزندان یا نوادگان دریافت شد، این اطلاعات به مجموعه والد برای نگهداری بازگردانده می‌شود. زمانی‌که نیاز به پس‌پرش یا پس‌گرد از گره‌ای نیاز بود، متغیرهای آن گره از لیست این مجموعه حذف می‌شوند و این اطلاعات به گره مقصدی که به آن حرکت می‌کنیم تحویل داده می‌شود. الگوریتم این رفتار را انجام می‌دهد برای اینکه مجموعه‌ای را که در گره وجود دارد حاوی متغیرهایی است که در طول بررسی آن گره جمع‌آوری شده‌است و این اطلاعات حاوی نتایج با ارزشی در مورد گره‌های زیر دست است. یه این خاطر است که تنها زمانی‌که پرش به عقب اتفاق میفتدمجموعه متغیرها ارسال می‌شوند به گره مقصد، از این رو است که اطلاعات مربوط به گره‌ای که از آن پرش شده قابل چشم‌پوشی است. درخت پوشای کمینه
این الگوریتم نیز مشابه الگوریتم پریم برای یافتن درخت پوشای کمینهٔ یک گراف به کارمی رود. دراین الگوریتم ابتدا یال‌ها از کمترین وزن به بیشترین وزن مرتب می‌گردند سپس یال هابه ترتیب انتخاب شده و اگر یالی ایجاد حلقه کند و کنار گذاشته می‌شود. عملیات هنگامی خاتمه می‌یابد که تمام رأس هابه هم وصل شوند یا اینکه تعداد یال‌های موجود در F برابر n-1 شود که n تعداد رأس‌ها است؛ که در بعضی کتاب‌ها با نام راشال مطرح شده‌است. شکل زیر مراحل کار را برای یک گراف فرضی نشان می‌دهد. بیشتر زمان در الگوریتم کروسکال مربوط به مرتب‌سازی یالهاست، پس اگر تعداد یال e باشد زمان این الگوریتم از مرتبه (e lg e) Ѳ خواهد بود. پس‌پرش (الگوریتم)
انتخاب مقدار تخصیص جزئی xk+1 همواره به صورت کامل برای پیدا کردن راه حل ضروری نیست چرا که اجباراً ما را به سمت جواب پایانی هدایت نمی‌کند. اگر شرایط به این گونه باشد x1=a1,…xk=ak و تمامی مقادیر برای xk+1 بدون نتیجه برای پیدا کردن راه کار به پایان برسد الگوریتم یک سطح به بالا یعنی گره xk رفته و در صورت امکان مقدار را عوض کرده سپس دوباره این مراحل را تکرار می‌کند. انتخاب مقدار تخصیص جزئی xk+1 همواره به صورت کامل برای پیدا کردن راه حل ضروری نیست اما یک پیشوند تخصیص جزئی ممکن است در حل مسائل ارزش زیادی داشته باشد. برای این منظور از ایندکسهایی با شرط j فرایند برگشت به عقب را فراخوانی می‌کند. در واقع این روش کمی با عملیات پرش به عقب معمول متفاوت است. یادگیری قانون وابستگی
آپریوری بهترین الگوریتم برای کاوش قوانین وابستگی است. این الگوریتم از استراتژی جستجوی اول-سطح برای شمارش پشتیبان مجموعه آیتم‌ها استفاده می‌کند و با استفاده از یک تابع تولید کاندید، از خصوصیت بستار رو به پایین پشتیبان بهره می‌برد. پس‌پرش (الگوریتم)
در واقع اگر در این الگوریتم از گره xl تا xm به سمت پایین حرکت کردیم و در بین راه مجبور به پرش به عقب شدیم، می‌توانیم مستقیماً به گره xm مراجعت نماید. در واقع در اینجا پرش به عقب بیانگر این نکته‌است که گره‌هایی که فی‌مابین گره‌های xl و xm هستند کاملاً نامرتبط اند به زیر درخت گره xm. به عبارت دیگر پرش به عقب نشان دهنده این نکته‌است که بازدیداز یک ناحیه درخت جستجو می‌توانسته کاملاً اشتباه باشد؛ بنابراین این قسمت از درخت جستجو می‌تواند کاملاً نادیده گرفته شود و پرش به گره xl ویا والدهای بالاتر گره والد اتفاق بیفتد در هرگره می‌توان از این نکته برای جمع‌آوری مجموعه‌ای از اطلاعات بخصوص یافتن متغیرهای پیشین اختصاص داده شده به منظور اثبات این نکته که هیچ راه حلی در زیر درخت گره مورد نظر وجود ندارد استفاده نمود. این مجموعه جمع‌آوری اطلاعات در زمان اجرای الگوریتم ساخته می‌شود. زمانی‌که از یک گره برگشت به عقب می‌کنیم مجموعه تمام متغیرهای آن گره و اطلاعات جمع‌آوری شده دربارهٔ آن گره که مقصد پس‌پرش یا مقصد Backtrack آن کجا بوده‌است کاملاً حذف می‌شود. این اتفاق از آنجایی رخ می‌دهد که گره‌های پرش شده از پس‌پرش هرگز شانس بازدید شدن را نخواهند داشت بنابراین این گره‌ها خودکار حذف می‌شوند. کارآیی الگوریتمی
در الگوریتم جستجوی ترتیبی برای یافتن عنصر مشخص x در آرایه، از ابتدای آرایه آغاز کرده و به ترتیب یکی یکی عناصر را با آن مقایسه می‌کنیم. هرکدام که با عنصر x برابر بود، مکان همان عنصر را در آرایه بعنوان جواب معرفی کرده و در صورت عدم وجود عنصر x عدد صفر را بعنوان خروجی الگوریتم معرفی می‌کنیم. یک الگوریتم جستجوی ترتیبی به صورت زیر است: void seqsearch (int n, }اما در الگوریتم جستجوی دودویی روش کار به این صورت است که ابتدا عنصر x را با عنصر میانی آرایه مقایسه می‌کنیم، اگر برابر بودند به جواب رسیده‌ایم و اگر نه دو حالت روی خواهد داد. یا x کوچکتر از عنصر میانی است که در چنین حالتی در صورت وجود باید در نیمهٔ اول آرایه باشد. لذا با همین روال جستجو را برای نیمهٔ اول انجام می‌دهیم. (اگر x با عنصر میانی نیمهٔ اول برابر بود به جواب رسیده‌ایم و تا انتها همینطور ادامه می‌دهیم.) و یا x بزرگتر از عنصر میانی است که در این صورت در نیمهٔ دوم آرایه جستجو را انجام می‌دهیم. به همین ترتیب جستجو را تا جایی ادامه می‌دهیم که به x برسیم یا اگر تا انتها پیدا نشد عدد صفر را بعنوان خروجی آرایه معرفی می‌کنیم. یک الگوریتم جستجوی دودویی در زیر آمده‌است: void binsearch (int n, حال اگر تعداد عناصر آرایه دو برابر شود یعنی 32 عنصر داشته باشیم، تعداد مقایسات در الگوریتم جستجوی دودویی فقط ۱ مرتبه از حالت قبل بیشتر خواهد بود، یعنی زمانی که اولین مقایسه صورت می‌گیرد و آرایه به دو زیر آرایه تقسیم می‌شود. لذا باز هم در بدترین حالت که x در آرایه موجود نیست، این الگوریتم 6 مقایسه انجام می‌دهد (formula_3). در حالت کلی هر بار تعداد عناصر آرایه دو برابر شود، یک مرتبه به تعداد مقایسه‌ها افزوده خواهد شد. بر این اساس اگر n یکی از توان‌های 2 و x از همهٔ عناصر یک آرایهٔ n عنصری یزرگتر باشد، در جستجوی دودویی تعداد کل مقایسه‌ها از این رابطه حاصل می‌شود: formula_4. در نتیجه زمانی که x از همهٔ عناصر آرایه بزرگتر باشد تعداد مقایسه‌ها در الگوریتم جستجوی دودویی نسبت به الگوریتم جستجوی ترتیبی به ویژه برای مقادیر بزرگ n به مقدار قابل توجهی کمتر خواهد بود. برای نمونه برای n=128 تعداد مقایسه‌ها در جستجوی ترتیبی برابر 128 بوده و در جستجوی دودویی 8 می‌باشد. و برای n=1024 در جستجوی ترتیبی تعداد مقایسه‌ها برابر 1024 بوده و در جستجوی دودویی تنها 9 مقایسه انجام می‌شود. و برای مقادیر بزرگتر n این اختلاف به مراتب بیشتر و چشمگیرتر خواهد بود. روش پیش افکنی (دینامیک سیالات)
الگوریتم روش پیش افکنی مبتنی بر تجزیه هلمهولتز (که گاهی اوقات به نام تجزیه هلمهولتز-هاج خوانده می‌شود) است که هر بردار میدان را به بخشی میدان سلونوئیدی بخش و بخشی میدان برداری پایستار تجزیه می‌کند. الگوریتم به‌طور معمول شامل دو مرحله است. در مرحله اول هر گام زمانی، متوسط سرعت که شرط تراکم ناپذیری را ارضا نمی‌کند محاسبه می‌شود. در مرحله دوم، فشار برای پیش‌افکنی (project) سرعت بینابینی در میدان بی دیورژانس سرعت استفاده‌می‌شود تا به روزرسانی بعدی سرعت و فشار انجام گردد. پراش الکترونی پس پراکنده
متأسفانه هر یک از این روش ها دست و پا گیر هستند و می توانند مستعد برخی خطاهای سیستماتیک برای یک اپراتور عمومی باشند. معمولاً آنها را نمی توان به راحتی در SEM های مدرن با کاربردهای چندگانه استفاده کرد. بنابراین اکثر سیستم‌های تجاری EBSD از الگوریتم مصورسازی همراه با یک حرکت تکراری هم جهت کریستال و هم مکان مرکز الگوی پیشنهادی استفاده می‌کنند. به حداقل رساندن تناسب بین باندهای واقع در الگوهای آزمایشی و نوارهای موجود در جداول جستجو، در محل مرکز الگو با دقت 0.5-1٪ از عرض الگوی همگرا می‌شوند. الگوریتم تبرید شبیه‌سازی‌شده
برای حل یک مسئلهٔ بهینه‌سازی، الگوریتم SA ابتدا از یک جواب اولیه شروع می‌کند و سپس در یک حلقه تکرار به جواب‌های همسایه حرکت می‌کند. اگر جواب همسایه بهتر از جواب فعلی باشد، الگوریتم آن را به عنوان جواب فعلی قرار می‌دهد (به آن حرکت می‌کند)، در غیر این صورت، الگوریتم آن جواب را با احتمال exp(-ΔE/T) به عنوان جواب فعلی می‌پذیرد. در این رابطه ΔE تفاوت بین تابع هدف جواب فعلی و جواب همسایه‌است و T یک پارامتر به نام دما است. در هر دما، چندین تکرار اجرا می‌شود و سپس دما به آرامی کاهش داده می‌شود. در گام‌های اولیه دما خیلی بالا قرار داده می‌شود تا احتمال بیشتری برای پذیرش جواب‌های بدتر وجود داشته باشد. با کاهش تدریجی دما، در گام‌های پایانی احتمال کمتری برای پذیرش جواب‌های بدتر وجود خواهد داشت و بنابراین الگوریتم به سمت یک جواب خوب همگرا می‌شود. الگوریتم SAیک الگوریتم غیرمقید می‌باشد که برای طراحی‌های سخت به کار می‌رود. الگوریتم حریصانه
در روش حریصانه رسیدن به هدف در هر گام مستقل از گام قبلی و بعدی است. یعنی در هر مرحله برای رسیدن به هدف نهایی، مستقل از این که در مراحل قبلی چه انتخاب‌هایی صورت گرفته و انتخاب فعلی ممکن است چه انتخاب‌هایی در پی داشته باشد، انتخابی که در ظاهر بهترین انتخاب ممکن است صورت می‌پذیرد. به همین دلیل است که به این روش، روش حریصانه گفته می‌شود. به طور مثال زمانی که یک دزد عجول و حریص وارد خانه‌ای می‌شود، در مسیر حرکت خود هر وسیله و کالای با ارزشی را داخل کیسه می‌اندازد. وی در این حالت چندان توجهی نمی‌کند که چه اشیائی را قبلاً برداشته و ممکن است در آینده چه اشیاء گرانبهاتری به دست آورد. او در هر گام تنها از بین اشیاء دم دست خود با ارزش‌ترین آن را انتخاب کرده و به وسایل قبلی اضافه می‌کند. پوشش پیشوند
الگوریتم از این گذاره استفاده می‌کند که اگر formula_51 الگوهای پرتکرار با طول i باشند الگوهای به طول i + 1 را می‌توان به n دسته تقسیم کرد که اعضای دسته jام همگی دارای پیشوند formula_52 باشند. با استفاده از گزاره قبل الگوریتم از سه مرحله تشکیل شده‌است: الگوریتم دایکسترا
الگوریتم دایکسترا یکی از الگوریتم‌های مورد استفاده برای محاسبه کوتاه‌ترین مسیر تک منبع (single-source shortest path) است و مشابه الگوریتم پریم می‌باشد در صورتی که گراف یال با وزن منفی داشته باشد، این الگوریتم درست کار نمی‌کند و می‌بایست از الگوریتم‌های دیگر نظیر الگوریتم بلمن-فورد که پیچیدگی زمانی آن‌ها بیشتر است استفاده کنیم. کاربرد الگوریتم‌ها
کاربرد پنجم الگوریتم‌ها در مسیر یابی بالاخص یافتن کوتاهترین مسیرهای موجود است. اگر هدف ما تعیین کوتاه‌ترین مسیر از یک تقاطع به دیگری در یک نقشه جاده‌ای باشد در حالی که تعداد مسیرهای ممکن زیاد است، برای رسیدن به راه حل بهینه باید از الگوریتم‌های مسیریابی استفاده نماییم. چنین مسئله‌ای را اگر به صورت گراف مدل‌سازی کنیم می‌توانیم به کمک الگوریتم‌های متعدد مسیر یابی مانند پریم، دایکسترا، فلوید و... بسته به خواسته‌های مسئله و نوع گراف کوتاه‌ترین مسیر را از یک راس به راس دیگر گراف پیدا نموده و بدین ترتیب مسئله را حل کنیم. تصویربرداری پراش منسجم
سه اید‌‌ه توسعه یا‌فت که امکان بازسا‌زی تصا‌ویر فضای واقعی را از الگو‌های پراش فراهم کرد. اولین ایده این بود که Sayre در سا‌ل ۱۹۵۲ متوجه شد که پراش براگ در زیر نمونه‌ها، شدت را نسبت به قضیه شانون پراش می‌کند. در صورتی‌که الگوی پراش با دو برابر فرکانس نایکوئیست (معکوس اندازه نمونه) یا متراکم‌تر نمونه‌برداری شود، می‌تواند یک تصویر فضای واقعی منحصر به فرد ایجاد کند. دومین ایده افزایش قدرت محاسباتی د‌ر دهه ۱۹۸۰ بود که الگوریتم خروجی ورودی هیبریدی تکراری (HIO) را برای بازیابی فاز، فعال می‌کند تا اطلاعات فاز را با استفاده از داده‌های شدت نمونه‌گیری مناسب با بازخورد، بهینه‌سازی و استخراج کند. این روش توسط Fienup در دهه‌ی ۱۹۸۰ معرفی شد. در نهایت، توسعه الگوریتم‌های "بازیابی فاز" منجر به اولین نمایش CDI در سال ۱۹۹۹ توسط میائو با استفاده از یک تصویر ثا‌‎نویه برای ارائه‌ی اطلاعات با وضوح پایین شد. روش‌های بازسازی بعداً تو‌سعه یافتند که می‌توانست نیاز به تصویر ثانویه را برطرف کند. د‌ر یک بازسازی معمولی ا‌ولین مرحله تولید فا‌زهای تصا‌د‌فی و ترکیب آن‌ها با اطلاعات دامنه از الگوی فضای متقابل است. سپس یک تبدیل فوریه به جلو و عقب اعمال می‌شود تا بین فضای واقعی و فضای متقا‌بل حرکت کند و مدول مربع مید‌ان موج پراش شد‌ه برابر با شد‌ت پراش اندازه‌گیری شده در هر چرخه تنظیم شود. با ا‌عما‌ل محد‌و‌د‌یت‌ها‌ی مختلف در فضا‌ی و‌اقعی و متقا‌بل، ا‌لگو پس ا‌ز تکر‌ا‌رها‌ی کا‌فی در فرآیند HIO به یک تصویر تبد‌یل می‌شود. برا‌ی ا‌طمینان از تکرارپذیری، فرآ‌یند معمولاً با مجموعه‌‌های جدیدی از فازهای تصادفی تکرار می‌شود که هر ا‌جرا معمو‌لاً صد‌ها تا هزا‌ر‌ان چرخه دارد. محدودیت‌های اعما‌ل‌شده در فضا‌ی و‌اقعی و متقابل، معمولاً به تنظیمات آ‌زمایشی و نمونه‌ای که قرار است تصویر شود بستگی دارد. محدودیت فضای واقعی، این ا‌ست که جسم تصویر شده را به یک منطقه محدو‌د به نام "پشتیبا‌نی" محدود کند. به عنوان مثال، در ابتدا می‌توان فرض کرد که شیئی که باید تصویربرداری شود در منطقه‌ای قرار دارد که تقریباً از ا‌ندازه پرتو بزرگ‌تر نیست. در برخی مو‌ارد ا‌ین محدودیت ممکن است محد‌ود‌تر با‌شد، ما‌‌نند یک منطقه پشتیبانی دوره‌ای برای یک آ‌رایه با فا‌صله یکنواخت از نقاط کو‌انتو‌می. محققا‌ن د‌یگر با ا‌عمال محد‌‌و‌د‌یت‌های دیگر، تصویر‌‌برد‌ا‌ری ا‌ز اجسام گسترده، یعنی ا‌جسا‌می که بزرگ‌تر از اندازه پرتو هستند، بررسی کرده‌‌ا‌ند. الگوریتم چان
در ابتدا فرض می کنیم که عدد h را داریم و بنابراین پارامتر m را برابر h تعریف می کنیم. این فرض شاید به نظر واقعی نرسد، اما بعداً این فرض را از الگوریتم حذف خواهیم کرد.این الگوریتم در ابتدا با تقسیم دلخواه مجموعۀ نقاط(P) به حداکثر 1+n/m زیر مجموعه که در هر یک از آن‌ها حداکثر m نقطه وجود دارد، شروع می‌شود. سپس با استفاده از الگوریتم پوش محدب، می‌توان در هر یک از این زیر مجموعه‌ها با زمان (O(n log n، پوش محدب را محاسبه کرد.توجه کنید که از آنجا که (O(n/m زیر مجموعه که هر یک شامل(O(m نقطه است وجود دارد، این مرحله حداکثر (O(n/m)O(m log m) = O(n log m زمان می‌گیرد. پس‌پرش (الگوریتم)
الگوریتم در گره‌های برگ، کوچکترین ایندکس مثل formula_4 را با آخرین ایندکس مورد ارزیابی قرارمیدهد تا از این راه خانه نامناسب را شناسایی کند. ازبین خانه‌های با ارزش شناسایی شده شروع به مقایسه ایندکس‌های مجموعهxformula_5 برای انتخاب بهترین خانه می‌کند. به این ترتیب، زمانی‌که الگوریتم مجدداً بازمی‌گردد به متغیر xk+1، کمترین ایندکس جمع‌آوری شده بیانگر پرش امن است. الگوریتم آپریوری
الگوریتم‌های دیگر برای یافتن قوانین ارتباط در داده‌های بدون تراکنش (Winepi و Minepi) یا فاقد زمان (توالی DNA) طراحی شده‌اند. هر معامله به عنوان مجموعه‌ای از اقلام (یک «مجموعه اقلام») دیده می‌شود. با توجه به آستانه formula_1، الگوریتم اپریوری مجموعه مواردی را که زیرمجموعه حداقل معاملات formula_1 در پایگاه داده هستند، شناسایی می‌کند. قضیه اصلی واکاوی الگوریتم‌ها
میخواهیم در یک آرایه مرتب ، کلید خاصی را بیابیم. اولین روش آن است که تمام آرایه را بپیماییم که از مرتبه"n" است. در الگوریتمی که در ادامه توضیح داده شده است این کار را با مرتبه زمانی کمتری انجام می دهد. از روش تقسیم استفاده میکنیم یعنی آرایه را به دو قسمت تقسیم میکنیم و هرکدام را جداگانه در جستوجوی دودویی قرارمیدهیم تاجایی که به جواب برسیم. الگوریتم بروکا
الگوریتم بروکا الگوریتمی برای پیدا کردن درخت فراگیر مینیمم با وزن یال‌های مجزا در یک گراف است. درخت فراگیر کمینه درختی است شامل تمام رأس‌های یک گراف، به‌طوری‌که مجموع وزن یالهاش کمترین باشد. این روش برای اولین بار در سال 1926 توسط "اوتاکار بروکا" به عنوان یک روش ساخت شبکۀ توزیع انرژی الکتریکی کارآمد برای موراوی منتشر شده‌است. الگوریتم در سال 1938 توسط و در سال 1950 توسط Florek و و Perkal و Zubrzycki و برای بار دیگر در سال 1965 توسط Sollin دوباره کشف شد. از آن‌جایی که "سولین" تنها دانشمندی از این لیست بوده که در کشورهای انگلیسی زبان زندگی می‌کرده، این الگوریتم غالباً و به‌خصوص در پردازش موازی به "الگوریتم سولین" مشهور است. الگوریتم بروکا را می‌توان حالت موازی الگوریتم پریم دانست. در هر راس گراف، سبک‌ترین یال را انتخاب می‌کنیم و راس انتهایی یال انتخاب شده را نیز علامت می‌زنیم و این دو راس را از گراف حذف می‌کنیم و این کار را ادامه می‌دهیم تا گراف به یک راس تبدیل شود؛ درخت کمینۀ مورد نظر ما درختی متشکل از رأس‌ها و یال‌های انتخاب شده‌است. مراحل الگوریتم: روش زیر را تا وقتی گراف به یک گره تبدیل شود ادامه می‌دهیم: پس‌پرش (الگوریتم)
در قسمت قبل روش کار الگوریتم برای زمان‌هایی که شاخهٔ دیگری وجود ندارد و زمانی‌که مقادیر یک متغیر به صورت نامتناسب در انتهای شاخه بود را مورد بررسی قراردادیم. در روش قبلی به هنگام جستجوی درخت زمانی اجازه پس‌پرش داده می‌شد که در گره‌های برگ قرارمیداشتیم و گره دیگری وجود نمی‌داشت. انتخاب بهینه فعالیت‌ها
تحلیل زمانی :بیشترین زمان در الگوریتم مربوط به مرتب سازی ابتدای کار است و لذا الگوریتم دارای مرتبه زمانی (o(n log n می‌باشد. www.prozhe.com * الگوریتم پریم
یک پیاده‌سازی ساده، استفاده از نمایش گراف به صورت ماتریس مجاورت است که در آن به دنبال آرایه‌ای از وزنها باشیم و یال‌های با وزن کمینه را به مجموعه خود اضافه کنیم. این روش (O("V" زمان می‌برد. الگوریتم پریم بااستفاده از داده ساختار هیپ دودویی ساده و نمایش فهرست مجاورت می‌تواند در زمان (O("E" log "V" اجرا شود که در آن E تعداد یالها و V تعداد رئوس است. استفاده از مدل پیچیده تری به نام هیپ فیبوناچی باعث می‌شود این زمان تا حد (O("E" + "V" log "V" کاهش یابد. سرعت این روش به خصوص زمانی آشکار می‌شود که در گراف رابطه ("E" = ω("V" بین رئوس و یالها برقرار باشد. الگوریتم حریصانه
هرچند روش یکتایی برای اثبات درستی الگوریتم حریصانه وجود ندارد ولی روش زیر در خیلی از مواقع الگوریتم را اثبات می‌کند. روش اثبات به این صورت است که دنبالهٔ تصمیمات اتخاذ شده در هر مرحله را در نظر گرفته، دنباله‌ای بهینه پیدا می‌کنیم که با دنبالهٔ ساخته شده یکسان باشد (منظور از دنبالهٔ بهینه، دنباله‌ای از کارها می‌باشد که جواب بهینه را به ما می‌دهد). برای پیدا کردن دنباله، ابتدا یک دنباله بهینه را درنظر می‌گیریم و در هر مرحله یک دنباله شبیه‌تر به دنباله خودمان پیدا می‌کنیم که بهینه باشد و سرانجام دنباله‌ای که پیدا کردیم با دنبالهٔ ما یکسان می‌شود. درخت پوشای مینیمم توزیع شده
دو الگوریتم مورد استفاده برای مسئله درخت پوشای مینیمم، الگوریتم پریم و الگوریتم کروسکال هستند. با این حال، دشوار است این دو الگوریتم در مدل توزیع پیام را به کار برد. چالش‌های اصلی عبارتند از: با این حال، نوبری و همکاران یک الگوریتم موازی PMA، پیشنهاد دادند که به موازات الگوریتم پریم است. با توجه به این مشکلات، روش‌های جدید برای الگوریتم‌های‌های MST توزیع شده در مدل گذر پیام مورد نیاز شد. مرتب‌سازی‌های خطی
در این الگوریتم محدودیت اعمال شده روی داده این است که کلید تمامی عناصر باید اعداد صحیح بوده و بین 1 تا m قرار بگیرند که m یک عدد ثابت است و این الگوریتم با استفاده از آرایه‌ای از اعداده صحیح به طول m عناصر مورد نظر را مرتب می‌کند. به‌طور خلاصه الگوریتم به این صورت عمل می‌کند که تعداد دفعات ظاهر شدن هر عنصر در ورودی را با کمک آرایه گرفته شده حساب می‌کند و سپس با این اطلاعات از ابتدا شروع کرده و هر عنصر را به تعداد دفعات ظهورش در ورودی در خروجی قرار می‌دهد، و با توجه به اینکه این عمل را از 1 تا m انجام می‌دهد خروجی مرتب شده‌است. برای تشریح کامل الگوریتم به صفحه مرتب‌سازی شمارشی مراجعه کنید. این الگوریتم مرتب سازی برای مرتب کردن اعدادی با طول ثابت به اندازهٔ k مورد استفاده قرار می‌گیرد و کاربرد دارد.البته بهتر است دقت شود اعداد با طول کمتر از k را می‌توان با قرار دادن صفر در سمت راست انها به اعداد ی به طول k تبدیل شوند. به‌طور خلاصه روش کار این الگوریتم به این صورت است که عناصر را در k مرحله با استفاده از مرتب سازی شمارشی مرتب می‌کند. به این صورت که ابتدا عناصر را بر حسب کم ارزش‌ترین رقم انها مرتب می‌کند و سپس بر حسب رقم بعدی کم ارزش آنها و این کار را تا رقم k ادامه داده و در انتها عناصر مرتب شده هستند. ذکر این نکته ضروریست که الگوریتم شمارشی که برای این الگوریتم استفاده می‌شود حتماً باید پایدار باشد. این الگوریتم به سال 1887 بر می‌گردد. در ان دوران از این الگوریتم در ماشین‌های Tabulating و همچنین ماشین‌های مکانیکی استفاده می‌شده. برای تشریح کامل این الگوریتم به صفحهٔ مرتب‌سازی پایه‌ای مراجعه کنید. این الگوریتم به نوعی می‌توان گفت حالت کلی الگوریتم مرتب سازی مبنایی است، در مرتب سازی سطلی عناصری که می‌خواهیم مرتب کنیم، دارای k مؤلفهٔ a1 تا ak هستند و که مؤلفهٔ ai بر مؤلفهٔ ai-1 در اولویت دارد. در مرتب سازی مبنایی این k مؤلفه ارقام یک عدد بودند ولی در مرتب سازی سطلی این مؤلفه‌ها صرفاً ارقام نیستند. روش کار این الگوریتم هم تقریباً همانند مرتب سازی مبنایی است. به این صورت که ابتدا عناصر را بر حسب مؤلفهٔ اول آنها مرتب می‌کند و همین گونه تا مؤلفهٔ k ادامه می‌دهد و در انتها عناصر مرتب شده هستند. برای اطلاعات کامل تر در رابطه با این الگوریت به صفحهٔ مرتب سازی سطلی مراجعه کنید. "داده ساختارها و طراحی الگوریتم هاً تألیف دکتر محمد قدسی برش میانی
این الگوریتم به این شکل عمل می‌کند که در هر دسته ابتدا مولفه ای که دامنه تغییرات عناصر در آن از بقیه بزرگ‌تر است را پیدا کرده و داده‌ها را برحسب مقادیر در آن بُعد مرتب می‌کند. سپس با پیدا کردن میانه داده‌ها را به دو دسته قبل و بعد میانه تقسیم می‌کند. اگر هنوز تعداد دسته‌های ایجاد شده از تعداد مورد نظر کمتر بود این عملیات را بر روی هر دو دسته ایجاد شده تکرار می‌کند. در پایان معمولاً میانگین عناصر هر دسته را به عنوان نماینده آن دسته انتخاب می‌کنند. پرایمر واکینگ
اساس این روش به طریق زیر است: الگوریتم آپریوری
همچنین، هم پیچیدگی زمانی و هم مکانی این الگوریتم بسیار زیاد است: formula_14، بنابراین نمایی، جایی که formula_15 عرض افقی (تعداد کل اقلام) موجود در پایگاه داده است. الگوریتم بروکا
دیگر الگوریتم‌هایی که برای پیدا کردن درخت فراگیر کمینه وجود دارد الگوریتم پریم و الگوریتم کروسکال است. سریع‌ترین الگوریتم در این زمینه را می‌توان با ترکیب الگوریتم پریم و الگوریتم بروکا به‌دست آورد. سریع‌ترین الگوریتم یافتن درخت پوشای کمینۀ تصادفی بر پایۀ الگوریتم بروکا است که در زمان formula_1 اجرا می‌شود؛ بهترین الگوریتم قطعی شناخته شده برای یافتن درخت کمینۀ پوشا ( که توسط Bernard Chazelle معرفی شد) نیز برپایۀ الگوریتم بروکا و با زمان اجرایی برابر ((O("E" α(V است. این الگوریتم‌های قطعی و تصادفی مراحل الگوریتم بروکا را تلفیق می‌کنند به این صورت که تعداد مؤلفه‌هایی که برای اتصال باقی می‌ماند را با مراحل مختلفی که تعداد یال‌های بین جفت مؤلفه‌ها را کاهش می‌دهند، کم می‌کند. الگوریتم ویتربی
برای جستجوی تمامی فضای جواب باید این احتمال را برای تمامی مسیرها بدست بیاوریم: Pr(خشک، نم‌دار، مرطوب | آفتابی، آفتابی، آفتابی)، Pr(خشک، نم‌دار، مرطوب | آفتابی، آفتابی، ابری)، Pr(خشک، نم‌دار، مرطوب | آفتابی، آفتابی، بارانی)، . . Pr(خشک، نم‌دار، مرطوب | بارانی، بارانی، بارانی) پیچیدگی زمانی این راه‌حل از اندازهٔ نمایی (formula_3) بوده و بهینه نیست. برای سرعت بخشیدن به الگوریتم می‌توان از تکنیک شاخه و حد استفاده کرد اما یک راه حل در زمان چندجمله‌ای برای این مسئله وجود دارد که الگوریتم ویتربی است. یک ذهن همیشه در سفر
بازیباز در این بازی کنترل اولین هوش مصنوعی رایانه‌ای در دنیا و در سال ۲۰۳۱ را که «پریسم» نام دارد، به دست می‌گیرد. این سال مصادف با افول اقتصاد «ایالات متحدهٔ آمریکای شمالی» است. بسیاری از جوانان تبدیل به «جوی بوت» گردیده‌اند (دستگاه پیشرفته‌ای که به‌طور مستقیم اقدام به شبیه‌سازی ورودی اعصاب به مغز می‌نماید) و با تحریک بیش از حد این ورودی‌های عصبی، اقدام به خودکشی کرده‌اند. در همین زمان یک ارتش تازه تأسیس اقدام به تهیه سلاح هسته‌ای جدیدی نموده که ابعاد آن در حد یک جعبه سیگار معمولی می‌باشد و قصد دارند به وسیله ترس و ارعاب، «ایالات متحدهٔ آمریکای شمالی» را تبدیل به پلیس دنیا نمایند. هوش مصنوعی «پریسم» یک رایانه بسیار بافرهنگ می‌باشد و حدود ۱۱ سال است که در قالب انسانی خود و با نام «پری سیم» زندگی می‌کند (به صورت واقعی حدود ۲۰ سال است که شبیه‌سازی آن آغاز گردیده). دکتر «آبراهام پریلمن» پدر و به وجود آورنده «پریسم»، او را از طبیعت و سرشت واقعیش آگاه می‌کند و به مرور زمان او را از حالت شبیه‌سازی به شکل واقعی تبدیل می‌کند. دکتر «پریلمن» توضیح می‌دهد که دلیل خلق این هوش مصنوعی یک مأموریت حیاتی است: این شبیه‌سازی برنامه‌ای است تحت نام «برنامه نوسازی اهداف ملی» که توسط سناتور «ریچارد رایدر» پشتیبانی می‌شود. هنگامی که پریسم در حالت شبیه‌سازی باشد، قادر به ذخیره مراحل پیشرفت اهداف پروژه در یک بافر است که در آنجا می‌تواند اهداف پروژه را با میزان پیشرفت آن مقایسه نماید. اگر «پِری» در حالت شبیه‌سازی بمیرد، ماجرا و داستان به پایان خود نمی‌رسد، بلکه برنامه شبیه‌ساز به سادگی می‌تواند ریست و دوباره راه‌اندازی شود. پرایمر (زیست‌شناسی مولکولی)
توالی یابی DNA به منظور تعیین نوکلئوتیدهای تشکیل دهنده یک رشتهٔ DNA انجام می‌شود. در روش خاتمه زنجیره سنجر (Sanger chain termination method) که از روشهای توالی یابی محسوب می‌شود، از یک پرایمر جهت آغاز رونویسی در رشته استفاده می‌گردد. پس‌پرش (الگوریتم)
در روش پس‌گرد زمانی‌که مقادیر یک متغیّر مورد بررسی قرار بگیرد و جستجو بی‌نتیجه پایان یابد، الگوریتم مقدار آخرین متغیرهای گره پیشین مورد بررسی قرار می‌دهد ولی اگر به انتها رسید و تمامی گره‌ها بررسی شد و به جواب درستی نرسیدیم، مقدار گره جستجو را تغییر و عملیات جستجو دوباره تکرار می‌شود. اگر شرایط به این گونه باشد x1=a1,…،xk =ak و تمامی مقادیر برای xk+1 بدون نتیجه برای پیدا کردن راه کار به پایان برسد الگوریتم یک سطح به بالا یعنی گره xk می‌رود؛ و در صورت امکان، مقدار را عوض کرده و به بالا بازمی‌گردد و سپس دوباره این مراحل را تکرار می‌کند. پرایمر واکینگ
پرایمر واکینگ (به انگلیسیPrimer walking) روشی برای توالی یابی قطعات DNA با وزن ۱/۳ تا ۷ کیلوباز است. چنین قطعاتی به علت طولانی بودن، برای توالی یابی از طریق خوانش منفرد با روش اختتام زنجیره مناسب نیستند. این روش از طریق تقسیم کردن توالی بلند به چندین توالی کوتاه پی در پی انجام می‌شود. DNAی مورد نظر ممکن است یک قطعه وارد شونده به پلاسمید، یک محصول PCR یا یک قطعه پر کننده شکاف در توالی یابی ژنوم باشد. عبارت "primer walking" زمانی استفاده می‌شود که هدف اصلی توالی یابی ژنوم است. در حالی که عبارت "chromosome walking"زمانی استفاده می‌شود که ما توالی را می‌دانیم اما از ژن، کلون نداریم. به عنوان مثال ژنی که عامل ایجاد یک بیماری است ممکن است در نزدیکی یک نشانگر خاص همچون یک RFLP بر روی توالی قرار گرفته باشد. به منظور دست یافتن به ادامه توالی، باید پرایمرهای جدید که مکمل ۲۰ باز انتهایی توالی معلوم هستند، طراحی و سنتز شوند. الگوریتم پس‌رو-پیش‌رو
با یک روش مشابه می‌توان احتمالات پیشین را محاسبه کرد. به صورت زیر: حالا ما فرض می‌کنیم که در حالت خاصformula_39 هستیم و چون این حالت فرض شده‌است یعنی احتمال این حالت ۱۰۰٪ است پس به این صورت در می‌آید: توجه کنید که ما در حال حاضر از یک بردار عمودی استفاده می‌کنیم و بردارهای احتمالاتی پسین ما افقی بودند. پس می‌توانیم عملیات زیر را انجام دهیم: می‌توانیم این بردار را هم (مانند بخش قبل) نرمال کنیم اما معمولاً این کار را انجام نمی‌دهند. هر ورودی احتمال واقعه‌ای در آینده را نشان می‌دهد و نرمال کردن این بردار معادل استفاده از قضیهٔ بیز برای پیدا کردن احتمال هر حالت برای ایجاد کردن واقعه‌های آینده است. در این‌جا هم مانند قسمت پسین از همان formula_35 استفاده می‌کنیم تنها formula_43 اسکیل شده نیست. عملیات به صورت زیر است: که در آن formula_45 نشان دهنده بردار اسکیل شده قبلی است. از این معادله می‌توان نتیجه زیر را گرفت: این معادله برای این مفید است که اجازه می‌دهد تا احتمال کامل بودن در یک حالت در زمان داده شده t را داشته با ضرب کردن این مقادیر داشته باشیم: برای درک این موضوع توجه داشته باشید که formula_48 احتمال مشاهده کردن حالت داده شده را از طریق گذشتن از حالت formula_49 در زمان t مشخص می‌کند. این احتمال شامل احتمالات پسین است که که تمام وقایع تا زمان t را پوشش می‌دهد و همچنین احتمال‌های پیشین که شامل تمام وقایع آینده می‌شود. این همان شمارنده‌ای است که در معادله به دنبالش بودیم و بر احتمال حقیقی توالی مشاهده شده تقسیم می‌کنیم تا بردار را نرمال کنیم و تنها احتمال formula_39. این ارزش‌ها گاهی اوقات به نام "ارزش‌های هموار (صاف شده)" خوانده می‌شوند زیرا برای به دست آوردن آن‌ها از احتمالات پسین و پیشین استفاده شده‌است تا احتمال نهایی را محاسبه کند. الگوریتم کوانتومی
الگوریتم کوانتومی الگوریتمی است که بر مدلی واقع گرا از یک کامپیوتر کوانتومی اجرا می‌شود. پر استفاده‌ترین مدل مدلی است که از جریان کوانتومی استفاده می‌کند. الگوریتم کلاسیک روشی است که هر مرحلهٔ ان بر روی کامپیوترهای کلاسیک قابل اجرا باشد و در مقابل ان الگوریتم کوانتومی روشی است که هر مرحلهٔ ان بر روی کامپیوترهای کوانتومی قابل اجرا باشد. مسئله‌های غیرقابل حل با الگوریتم‌های کلاسیک همچنان با الگوریتم کوانتومی غیرقابل حل است. اما مزیت الگوریتم کوانتومی این است که مسئله‌های قابل حل با زمان کمتری حل می‌شوند. معروف‌ترین الگوریتم‌های کوانتومی الگوریتم شور برای تجزیه به عوامل اول و الگوریتم گرور برای جستجو در یک پایگاه داده نامرتب است. الگوریتم شور به صورت نمایی از بهترین الگوریتم کلاسیکی که تجزیه به عامل اول را انجام می‌دهد بهتر عمل می‌کند و همین‌طور الگوریتم گرور به اندازهٔ رادیکال زمان بهترین الگوریتم کلاسیک با عملکرد مشابه زمان می‌گیرد. الگوریتم تبرید شبیه‌سازی‌شده
با این تفاسیر، دما نقش اساسی را در کنترل‌کردن تغییرات در سیستم با توجه به حساسیت آن نسبت به تغییرات انرژی ایفا می‌کند. به‌طور دقیق‌تر، در مقادیر بزرگ formula_7، تغییرات در حالت سیستم نسبت به تغییرات بزرگتری در سیستم حساس است تا زمانی که دما کوچکتر است. نام و ایده بنیادین الگوریتم منشا‌ٔگرفته از ویژگی دما است. این ویژگی در واقع به گونه‌ای کنترل می‌شود که دما حین شبیه‌سازی به صورت تدریجی کاهش می‌یابد. الگوریتم با قرار دادن formula_24 شروع می‌شود (در واقع دما در ابتدا یک مقدار بزرگ را اختیار می‌کند) و در هر گام طبق یک زمان‌بندی از پیش‌تعیین‌شده کاهش می‌یابد. در تعیین این زمان‌بندی باید توجه داشت که با اتمام‌ منابع مورد استفاده مانند تعداد محاسبات، زمان انجام عملیات‌ها هم تمام شود. برای انجام این کار انتظار می‌رود در ابتدا الگوریتم در فضای بزرگی از پاسخ‌ها و بی‌توجه به تابع انرژی به دنبال جواب بگردد. سپس به سمت مناطق با انرژی کمتر پرش کند و این منطقه به مرور کوچک و کوچکتر شود تا زمانی که سیستم دقیقا به پایین‌ترین نقطه سراسری برسد.دو شکل روبرو نشان‌دهندهٔ تأثیر زمان‌بندی تبرید بر کارایی الگوریتم هستند. مسئله بازترتیبی پیکسل‌های یک عکس به منظور کمینه کردن انرژی واقعی تصویر است، که باعث می‌شود رنگ‌های مشابه به هم نزدیک‌تر باشند و رنگ‌های متفاوت در فاصله دورتری از هم قرار بگیرند. دو شکل روبرو از دو زمان‌بندی سریع و آرام در بدست آمده‌اند. نخست کوتاه‌ترین کار
مشکل دیگر این الگوریتم این است که باید مدت زمان اجرای پردازش از قبل مشخص باشد. پیش‌بینی دقیق زمان اجرای فرایند ممکن نیست، اما روشهایی وجود دارد که به کمک آن می‌توان زمان اجرای فرایند را تخمین زد همانند میانگین گرفتن از زمان اجراهای قبلی. استفاده از این الگوریتم تنها در محیط‌های خاصی استفاده می‌شود که زمان اجرای فرایندها از قبل به‌طور دقیق مشخص است. تخمین زدن زمان اجرای فرایندهای موجود در صف گاهی اوقات با استفاده از تکنیکی به نام سالخوردگی انجام می‌شود. الگوریتم حریصانه
کد مربوط به روش اول: procedure change ({c_1}, {c_2}, {...}, {c_r}: value of denominations of coin, where {c_1}> {c_2}> {...}> {c_r}; n : a positive integer) { همان‌طور که مشاهده کردید این روش بسیار ساده است، ولی اصلی‌ترین نکته این است که آیا این روش الزاماً به یک حل بهینه می‌رسد؟ در رابطه با مسئلهٔ خاص فوق می‌توان اثبات کرد که جواب بهینه است ولی با مثال زیر نشان می‌دهیم که ممکن است این گونه نباشد. هرم فیبوناچی
استفاده از هیپ‌های فیبوناتچی برای صف‌های اولویت‌دار زمان اجرای بعضی از الگوریتم‌های مهم را بهبود می‌بخشد، مثل الگوریتم دیکسترا برای محاسبه کوتاهترین مسیر در گراف، یا الگوریتم پریم برای محاسبه درخت فراگیر مینیمم در یک گراف. مرتب‌سازی پایه‌ای
یک الگوریتم مرتب‌سازی مبنایی پرارزش‌ترین رقم بازگشتی جزء به جزء به صورت زیر کار می‌کنند: الگوریتم جستجوی عمق اول
پیمایش با انتخاب رأس formula_1 به عنوان ریشه آغاز می‌شود. در هر گام که در راس formula_2 قرار داشته باشیم، ابتدا آن راس به عنوان یک رأس دیده شده برچسب می‌خورد. رأس دلخواه دیده نشده formula_3 از همسایگان formula_2 انتخاب شده و الگوریتم به صورت بازگشتی از formula_2 فرایند خود را ادامه می‌دهد. اگر در رأسی مانند formula_6 قرار گرفتیم که همهٔ همسایگانش دیده شده‌اند، اجرای الگوریتم را برای آن رأس خاتمه می‌دهیم. روند الگوریتم تا مادامی که همهٔ همسایگان formula_7 دیده نشده باشند ادامه می‌یابد.  ورودی گراف formula_8 و راس formula_2 از گراف formula_8 نسخهٔ بازگشتی الگوریتم به این شکل است: و یک نسخهٔ غیر بازگشتی الگوریتم به این قرار است: الگوریتم نیدلمن-وانچ
F_{ij} = \max_{h. یک الگوریتم بهتر برای همان مسئله(بدون جریمه پرش) که باز هم از روش برنامه نویسی پویا استفاده کرده‌است و زمان اجرای آن درجه دو است، در سال ۱۹۷۲ توسط دیوید سنکوف ارائه شد. الگوریتم‌های دیگری با همان درجه زمان اجرا، توسط وینتسیوک، در سال ۱۹۶۸ برای پردازش گفتار، و روبرت ونگر و مایکل فایکر، در سال ۱۹۷۴ برای تطابق رشته‌ای ارائه شده‌است. وانچ و نیدلمن، الگوریتم خود را به صورت بیشینه شباهت، فرموله کردند. یک امکان دیگر، کمینه کردن تغییرات بین دو توالی است. که ولادمیر لونشتین آن را معرفی کرد. در سال ۱۹۷۴، پیتر سلرز نشان که این دو الگوریتم در واقع معادل همند. امروزه «نیدلمن-وانج» به یک الگوریتم همترازی سراسری اشاره می‌کند که برای جریمه پرش‌های خطی، زمان اجرایی از درجه دو دارد. پوشش پیشوند
پوشش پیشوند یک الگوریتم بهینه برای انجام دنباله‌کاوی است. پوشش پیشوند یک الگوریتم تصویر محور است که از روش گسترش الگو استفاده می‌کند. در این الگوریتم بصورت بازگشتی یک پایگاه‌داده به تعدادی پایگاه‌داده تصویرشده کوچکتر تبدیل می‌شود و الگوها برای هر پایگاه‌داده گسترش می‌یابند و برای هر کدام از پایگاه‌داده‌های کوچکتر الگوهای پرتکرار پیدا می‌شوند. الگوریتم آپریوری
اپریوری از وسعت جستجوی اول و یک ساختار درخت Hash برای شمارش کارآمد مجموعه آیتم‌های نامزد استفاده می‌کند. این مجموعه آیتم‌های نامزد با طول formula_3 را از مجموعه آیتم‌های طول formula_4 تولید می‌کند. سپس نامزدهایی را که الگوی فرعی نادر دارند، هرس می‌کند. با توجه به لمای بسته شدن رو به پایین، مجموعه کاندید شامل همه مجموعه‌های آیتم formula_3 مکرر است. پس از آن، پایگاه داده معاملات را برای تعیین مجموعه موارد مکرر در بین نامزدها اسکن می‌کند. پس‌پرش (الگوریتم)
در عمل این الگوریتم به وسیلهٔ جمع‌آوری تمام ایندکس‌ها ساده در یک مجموعه واحد و در واقع به جای تولید کردن لیستهای مجزابرای هر formula_1‌سازی می‌شود به صورت خاص تر این الگوریتم در هر گره به جمع‌آوری همه مجموعه‌هایی که از فرزندانش به هنگام پرش به عقب جمع‌آوری کرده‌است می‌پردازد. زمان پرش به عقب از این گره، این مجموعه حذف می‌شود و تمامی اطلاعاتی که تا به حال جمع‌آوری کرده به هنگام پرش به عقب یا بازگشت به عقب را به خانه مقصد تحویل می‌دهد. الگوریتم در هر زمان
پروفایل سنجش عملکرد، کیفیت نتایج بر اساس ورودی و مقدار زمان که به الگوریتم اختصاص می‌یابد، تخمین می‌زند. هرچه این تخمین بهتر باشد، نتیجه نیز سریع تر بدست خواهد آمد. برخی سیستم‌ها دارای پایگاه داده بزرگتری هستند که این احتمال را موجب می‌شود که خروجی داده شده، همان خروجی مورد نظر باشد. مهم است که توجه داشته باشید که یک الگوریتم می‌تواند چندین پروفایل داشته باشد. پروفایل‌های سنجش عملکرد، بیشتر اوقات با استفاده از آمار ریاضی که از موارد نمایه استفاده می‌کنند، ساخته می‌شوند. به عنوان مثال، در مسئله فروشنده دوره‌گرد، پروفایل سنجش عملکرد با استفاده از یک برنامه خاص تعریف شده توسط کاربر برای تولید آمار لازم ایجاد شد. در این مثال، پروفایل سنجش عملکرد همان نقشه‌برداری زمان طی رسیدن به نتایج مورد نظر است. این کیفیت را می‌توان به چند روش مختلف اندازه‌گیری کرد: