الگوریتم جستجوی رشته

الگوریتم‌های جستجوی رشته (و یا تطبیق رشته‌ها) به رده‌ی مهمی از الگوریتم‌های موجود در رابطه با رشته‌ها اطلاق می‌شود. در این گونه از الگوریتم‌ها، مسئله‌ی اصلی پیدا کردن مکان‌های تکرار یک یا چند الگوی مورد جستجو (Pattern) در یک رشته‌ی بزرگ‌ (Text) است.

در این مثال، رشته‌ها از کنار هم گذاشتن تعدادی کاراکتر متعلق به یک مجموعه‌ی متناهی به نام الفبا () ساخته می‌شوند. می‌تواند حروف الفبای معمولی (از A تا Z)، الفبای دودویی () یا الفبای DNA () باشد که بسته به محل و کاربرد مسئله، تعیین می‌شود.

شرایط انتخاب الگوریتم

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

  • طول رشته Text بلند و طول رشته‌های Pattern بسیار کوتاه باشد.
  • طول رشته Text بلند و طول رشته‌های Pattern نیز بلند باشد.
  • رشته‌های Pattern ثابت باشند و تکرار‌های آن‌ها در رشته‌های Text متفاوت به صورت مداوم پرسمان شود.
  • رشته‌ی Text ثابت باشد و Pattern های مختلف در طول زمان پرسمان شوند.

برای گرفتن بهترین کارایی در هر یک از این شرایط، باید الگوریتم مشخصی را انتخاب کرد.

همچنین در نوعی از این مسئله، رشته‌های Pattern به صورت یک عبارت منظم داده می‌شوند، و باید جایگاه تمام زیررشته‌هایی که با آن عبارت منظم مطابق هستند به عنوان خروجی برگردانده‌شود.

طبقه بندی کلی

الگوریتم‌های جستجوی رشته به صورت کلی به سه دسته‌ی زیر تقسیم می‌شوند:

الگوریتم‌های جستجوی تک الگو

در جدول زیر، چند الگوریتم معروف ذکر شده و از نظر مرتبه‌ی زمانی و حافظه با هم مقایسه شده‌اند. ( طول الگو (Pattern)، طول رشته متن (Text) و برابر با تعداد حروف الفبا است)

نام الگوریتم زمان پیش‌پردازش زمان تطبیق حافظه مورد نیاز
الگوریتم جستجوی ساده‌لوحانه بدون پیش‌پردازش بدون حافظه جانبی
الگوریتم رابین-کارپ در حالت میانگین
در بدترین حالت
الگوریتم کنوث-موریس-پرت (KMP)
الگوریتم بویر-مور در بهترین حالت
در بدترین حالت

الگوریتم‌های جست‌و‌جوی تعدادی متناهی الگو

الگوریتم‌های جست‌و‌جوی تعدادی نامتناهی الگو

در این نوع از الگوریتم‌ها، استراتژی‌ها و ایده‌های متنوعی برای تطابق الگوهای ورودی (که به شکل عبارت منظم یا زبان منظم داده می‌شوند) به کار گرفته می‌شود.

بررسی چند مورد از الگوریتم‌های معرفی شده

الگوریتم جستجوی رشته‌ی ساده‌لوحانه (Naïve string search algorithm)

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

شبه‌کد جستجوی رشته‌ی ساده‌لوحانه:

procedure NaiveStringMatcher (T,P)
begin
  n=length(T);
  m=length(P);
  for s=0 to n-m do
    if P[1...m]=T[s+1...s+m] then
      print ("Pattern occurs with shift" s);
end

این الگوریتم از مرتبه زمانی است (فرض می‌کنیم که در این شبه‌کد، عمل مقایسه‌ی زیررشته‌ها به صورت کاراکتر به کاراکتر انجام خواهد شد).

جستجو بر پایه پذیرنده‌ی متناهی معین (Deterministic Finite Automata)

پذیرنده متناظر با رشته‌ی MOMMY

در این روش، ابتدا یک پذیرنده متناهی معین می‌سازیم که رشته‌هایی که حاوی الگوی مورد جستجوی ما هستند را بپذیرد؛ به این ترتیب که ابتدا یک زنجیره از State ها قرار می‌دهیم، که هر State نماینده‌ی یک مکان از الگو است (که تا آن‌جا روی الگو پیش رفته‌ایم). در واقع هر State نمایانگر یک پیشوند از الگو است. به غیر از یال‌های رو به جلو که با کاراکتر‌های متناظر الگو Label گذاری شده‌اند، هر State به‌ازای هر کاراکتر دیگر، به State ای قبل از خودش می‌رود. مثلاً State نماینده‌ی پیشوند ، با یال به State نماینده‌ی پیشوند می‌رود، اگر و تنها اگر بزرگ‌ترین پیشوندی از الگو باشد که برای پسوند است. همچنین رأس انتهایی متناظر با آخرین کاراکتر الگو، رأس پذیرش است.

با خواندن کاراکتر از رشته متن و حرکت روی این DFA، هر بار که به State پذیرش برسیم، یک تکرار از الگو را در متن پیدا کرده‌ایم. همچنین با تعمیم این روش، می‌توان الگوریتمی را برای جست‌وجوی عبارت‌های منظم در متن طراحی کرد.

البته هزینه ساخت چنین پذیرنده‌ای زیاد است (در صورت استفاده از ایده‌ی الگوریتم KMP، می‌توان با زمان این پذیرنده را ساخت) اما استفاده از آن سریع است.[۲]

DFA شکل زیر برای تشخیص دادن واژه‌ی MOMMY استفاده شده‌است:

روش‌های مبتنی بر اندیس

این الگوریتم‌های جستجو متن را پیش‌پردازش می‌کنند؛ بعد از ساختن زیررشته اندیسی[۳] (برای مثال درخت پسوندی یا آرایه پسوندی)، تعداد بارهایی که الگوی مورد جستجو در متن اتفاق افتاده‌است، به سرعت مشخص می‌شود؛ برای مثال یک درخت پسوندی را می‌توان در ساخت و همه‌ی z رخ‌داد الگوی مورد نظر در متن را می‌توان در پیدا کرد. این کار به سادگی با استفاده از یک بار جست‌و‌جوی عمق اول روی درخت پسوندی انجام می‌شود.

پیوند به بیرون

مراجع

  1. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7
  2. Kleinberg، Jon؛ Tardos، Éva. Algorithm Design. Pearson. شابک ۹۷۸۰۳۲۱۲۹۵۳۵۴.
  3. Substring Index


Read other articles:

Tabletop role-playing game by Robin Laws Skulduggery is a role-playing game by Robin D. Laws, published by Pelgrane Press in 2010. Description Skulduggery uses a variant of the system from The Dying Earth Roleplaying Game. Publication history Skulduggery was published by Pelgrane Press in 2010. Reception This section is empty. You can help by adding to it. (December 2014) References

 

Republik Rakyat Demokratik Korea조선민주주의인민공화국 Chosŏn Minjujuŭi Inmin Konghwaguk (Korea) Bendera Lambang Semboyan: 강성대국 (强盛大國) Kangsŏngtaeguk (Korea: Bangsa yang Kuat dan Sejahtera)Lagu kebangsaan:  애국가 Aegukka (Indonesia: Lagu Patriotik)Perlihatkan BumiPerlihatkan peta BenderaWilayah yang dikuasai Korea Utara berwarna hijau tua; wilayah yang diklaim tetapi tidak dikuasai berwarna hijau muda.StatusNegara berdaulatIbu kota(dan kota terbesar...

 

Franz Jung (2018) Unterschrift von Franz Jung Franz Jung (* 4. Juni 1966 in Mannheim) ist ein deutscher Geistlicher und römisch-katholischer Bischof von Würzburg. Inhaltsverzeichnis 1 Leben 2 Positionen (Auswahl) 3 Wappen und Wahlspruch 4 Schriften 5 Weblinks 6 Einzelnachweise Leben Franz Jung wuchs in Ludwigshafen am Rhein auf. Er trat als Priesteramtskandidat in das Herzogliche Georgianum in München ein und studierte Philosophie und Katholische Theologie an der von Jesuiten geleiteten P...

36th TVyNovelas AwardsDateFebruary 18, 2018LocationMexico City, MexicoHosted byJacqueline Bracamontes & Inés Gómez MontMost awardsCaer en tentación (10)Most nominationsCaer en tentación (18)Television/radio coverageNetworkLas Estrellas ← 35th · TVyNovelas Awards · 37th → The 36th TVyNovelas Awards is an academy of special awards to the best of soap operas and TV shows. The awards ceremony took place on February 18, 2018. The ceremony was televised in ...

 

  لمعانٍ أخرى، طالع محاسبة (توضيح). محاسبة القيمة حسب السوق (بالإنجليزية: Mark-to-market)‏ أو محاسبة القيمة العادلة تشير إلى حساب «القيمة العادلة» لأحد الأصول أو المطلوبات وذلك استنادًا إلى سعر السوق الحالي أو الأصول والمطلوبات المماثلة أو استنادًا إلى قيمة «عادلة» أخرى مُق...

 

International border Map of the Algeria-Mali border The Algeria–Mali border is 1,359 km (844 m) in length and runs from the tripoint with Mauritania in the north-west to the tripoint with Niger in the south-east.[1] Description The border begins in the west at the tripoint with Mauritania, and is a continuation of the NW-SE straight line that forms the Algeria–Mauritania border.[2] This straight line runs for circa 752 km (467 m). Just north of the 21st parallel ...

هجوم اللواء الخفيفمعلومات عامةالعنوان The Charge of the Light Brigade (بالإنجليزية) [1] شكل من الأعمال الإبداعية قصيدة النوع الفني الشعر السردي المُؤَلِّف ألفريد تنيسون لغة العمل أو لغة الاسم الإنجليزية تاريخ النشر 1854 السطر الأول Half a league, half a league, (بالإنجليزية) حالة حقوق التأليف وال...

 

American college basketball season 1908–09 VMI Keydets men's basketballConferenceIndependentRecord3–3Head coachPete Krebs (1st season)Home arenaLexington Skating RinkSeasons1909–10 → The 1908–09 VMI Keydets basketball team represented the Virginia Military Institute in their first ever season of basketball. The team was coached by Pete Krebs and went 3–3 the first year.[1] They played their games out of the Lexington Skating Rink.[2] Schedule Dat...

 

The Digital Economy and Society Index (DESI)[1] monitors Europe's overall digital performance and tracks the progress of EU countries regarding their digital competitiveness.[2] On annual basis, it monitors the performance of member states in digital connectivity, digital skills, online activity and digital public services in order to assess the state of digitalization of each member state as well as to identify areas requiring priority investment and action.[3][4&...

For 1934 film, see The Loudspeaker. 2009 Indian filmLoudspeakerTheatrical release posterDirected byJayarajScreenplay byJayarajStory byJayaraj P. Y. JoseProduced byJayarajM.P. Surendranth (co-producer)StarringMammoottySasi Kumar Gracy SinghJagathy SreekumarCochin Hanifa Saleem Kumar KPAC LalithaCinematographyGunashekharEdited byVijai SankarMusic byBijibalProductioncompanyNew Generation CinemaDistributed byP. A. SebastineTime Ads EntertainmentRelease date 20 September 2009 (2009-...

 

Vazgen Manukyan's cabinet1st Cabinet of ArmeniaVazgen ManukyanDate formed13 August 1990 (1990-08-13)Date dissolved22 November 1991 (1991-11-22)People and organisationsHead of stateLevon Ter-PetrosyanHead of governmentVazgen ManukyanMember partiesNational Democratic UnionHistorySuccessorGagik Harutyunyan The cabinet of Vazgen Manukyan in Armenia was formed August 13, 1990.[1] Cabinet Inaugural cabinet: 13 August 1990 – 22 November 1991 Incumbent Minister...

 

ماليزيا بوابة ويكيبيديا حول دولة ماليزيا هي دولة تقع في جنوب شرق آسيا مكونة من 13 ولاية وثلاثة أقاليم اتحادية، بمساحة كلية تبلغ 329,845 كم2. العاصمة هي كوالالمبور، في حين أن بوتراجايا هي مقر الحكومة الاتحادية. يصل تعداد السكان إلى أكثر من 30 مليون نسمة سنة 2014. ينقسم البلد إلى قسمي...

The Oldsmobile F-88 was a dream car created by Oldsmobile in 1954, with initial sketches made by Bill Lange.[1] It used the chassis of the Chevrolet Corvette and shared its 102 in (2,600 mm) wheelbase. Like the Corvette, and the Pontiac Bonneville Special, the F-88's body was fiberglass.[citation needed] The car used a 324 cubic inch (5.3 litre) Super 88 V8 engine with a four-barrel carburetor with a small, flat air cleaner. The Corvette-derived rear axle had a ratio...

 

United States historic placeNewtown Creek BridgeU.S. National Register of Historic Places Newtown Creek Bridge, October 2012Show map of PennsylvaniaShow map of the United StatesLocationRichboro Road over Newtown Creek, Newtown, PennsylvaniaCoordinates40°13′40″N 74°56′20″W / 40.22778°N 74.93889°W / 40.22778; -74.93889Arealess than one acreBuilt1796Architectural styleTwo span stone archMPSHighway Bridges Owned by the Commonwealth of Pennsylvania, Departm...

 

Pour les articles homonymes, voir Neuf-Novembre. Éphémérides Novembre 1er 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30           9 octobre 9 décembre Chronologies thématiques Croisades Ferroviaires Sports Disney Anarchisme Catholicisme Abréviations / Voir aussi (° 1852) = né en 1852 († 1885) = mort en 1885 a.s. = calendrier julien n.s. = calendrier grégorien Calendrier Calendrier perpétuel Liste de calendriers Naissances d...

اعزيب مولاي علي تقسيم إداري البلد المغرب  الجهة فاس مكناس الإقليم تاونات الدائرة قرية با محمد الجماعة القروية مكانسة المشيخة أولاد اسلامة السكان التعداد السكاني 268 نسمة (إحصاء 2004)   • عدد الأسر 37 معلومات أخرى التوقيت ت ع م±00:00 (توقيت قياسي)[1]،  وت ع م+01:00 (توقيت صي...

 

តំបន់ទេសចរណ៍ធម្មជាតិវ៉ាំងវៀងទេសភាពវ៉ាងវៀងនៅពេលព្រឹក វ៉ាំងវៀង ឬ វាំងវៀង (ភាសាឡាវៈ ວັງວຽງ; ភាសាអង់គ្លេសៈ Vang Vieng) គឺជាតំបន់ទេសចរណ៍ធម្មជាតិដ៏ទាក់ទាញមួយដែលមានទេសភាពស្រស់ត្រកាល ពោរពេ...

 

Aksara Latin   Aksara Bali     Suratan puniki kasurat nganggén basa alus. Koordinat: 6°07′54″S 107°07′21″E / 6.1317°S 107.1224°E / -6.1317; 107.1224 SukawangiKecamatanPeta genah Kecamatan SukawangiNegara IndonésiaPropinsiJawa BaratKabupaténBekasiKodepos17620Kode Kéméndagri32.16.03Désa/Kelurahan7 désa Sukawangi (Aksara Bali: sukawaṅi) inggih punika silih tunggil kecamatan ring Kabupatén Bekasi, propinsi Jawa Barat, ring panegar...

CiacovaKotaNegara RomaniaProvinsiProvinsi TimişPopulasi (2002)[1]7.285Zona waktuUTC+2 (EET) • Musim panas (DST)UTC+3 (EEST) Ciacova (dalam Hongaria: Csákcode: hu is deprecated ) adalah sebuah kota di provinsi Timiş, di bagian barat Rumania. Kota ini terletak 28 km dari kota Timişoara. Kota ini memiliki empat wilayah pedesaan yaitu: Cebza, Macedonia, Obad dan Petroman. Berdasarkan sensus tahun 2002, kota ini berpenduduk 7.285 jiwa. Status sebagai kota dim...

 

Monumento di LihulaAutoresconosciuto Data2002 Materialegranito e bronzo UbicazioneMuseo privato, Lagedi Coordinate59°23′22.61″N 24°56′26.92″E59°23′22.61″N, 24°56′26.92″E Il monumento di Lihula è il nome attribuito a un monumento che commemora gli estoni che combatterono per l'Estonia contro l'Unione Sovietica nella seconda guerra mondiale, situato in un museo privato a Lagedi, in Estonia. Il monumento è finito al centro di controversie in quanto è dedicato anche a quegl...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!