ⓘ جستجو سه‌تایی در علوم کامپیوتر رویه ی جستجو ترنری مهارتی برای پیدا کردن مقدار بیشینه یا کمینه در توابع أکید است. در این رویه مشخص می‌کنیم که مقدار بیشینه یا کمی ..

                                     

ⓘ جستجو سه‌تایی

جستجو سه‌تایی

در علوم کامپیوتر رویه ی جستجو ترنری مهارتی برای پیدا کردن مقدار بیشینه یا کمینه در توابع أکید است. در این رویه مشخص می‌کنیم که مقدار بیشینه یا کمینه تابع نمی‌تواند در یک سوم ابتدا یا انتهای دامنه ی تابع وجود داشته باشد. سپس همین شیوه را بر روی دو سوم باقی‌مانده به کار می‌بریم. جستجو سه‌تایی نمومه‌ای از روش الگوریتم تقسیم و حل استالگوریتم جستجو را ببینید.Ternary search

                                     

1. تابع

فرض کنید ما به دنبال بیشینۀ f x {\displaystyle fx} هستیم و می دانیم این مقدار بین A {\displaystyle A} و B {\displaystyle B} قرار دارد. برای این که الگوریتم قابل اعمال باشند، یک مقدار x {\displaystyle x} باید وجود داشته باشد به طوری که:

  • به ازای همۀ مقادیر a {\displaystyle a} و b {\displaystyle b} ، که A ≤ a < b ≤ x {\displaystyle A\leq a fb}
                                     

2. الگوریتم

تابع اکید f x {\displaystyle fx} را روی بازۀ } قرار دارد.

  • اگر f m 1 = f m 2 {\displaystyle fm_{1}=fm_{2}} ، این جستجو باید در بازۀ انجام شود. این حالت را می‌تونیم به هر یک از حالت‌های قبل برای ساده شدن رویه نسبت دهیم.

این فرایند تا زمانی ادامه پیدا می‌کند که بازۀ حاصل از مقدار ثابت از پیش تعیین شده کوچکتر شود.

انتخاب نقاط m 1 {\displaystyle m_{1}} و m 2 {\displaystyle m_{2}}:

  • m1 = l + r - l/3
  • m2 = r - r - l/3
                                     

3. درخت جستجوی سه‌تایی

درخت جستجوی سه‌تایی یکی از جالب‌ترین داده‌ساختارهادر زمینه دانش خوداست، زیرا این درخت ذخیره‌سازی بهینه را با سریع پیدا کردن ترکیب می‌کندو توانایی جستجوی پیشوندرا نیز دارد.

قسمتی از نظریه

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

شکل زیر درخت جستجو سه تایی رشته‌های "as", "at", "cup", "cute", "he", "i" and "us" را نشان می‌دهد:

c \ | / a u h | / / / t e u \ | \| | s p e i s

پیاده‌سازی

پیاده‌سازی تابع search:

پیاده‌سازی کلاس string:

پیاده‌سازی کلاس درخت جستجوی سه‌تایی: