logo

Søgealgoritmer

Søgealgoritmer er essentielle værktøjer inden for datalogi, der bruges til at lokalisere specifikke elementer i en samling af data. Disse algoritmer er designet til effektivt at navigere gennem datastrukturer for at finde den ønskede information, hvilket gør dem fundamentale i forskellige applikationer som f.eks. databaser, websøgemaskiner , og mere.

Søgealgoritme



Indholdsfortegnelse

Hvad er søgning?

Søgning er den grundlæggende proces lokalisering af et bestemt element eller element i en samling af data . Denne indsamling af data kan antage forskellige former, såsom arrays, lister, træer eller andre strukturerede repræsentationer. Det primære formål med søgning er at afgøre, om det ønskede element findes i dataene, og i så fald at identificere dets præcise placering eller hente det. Det spiller en vigtig rolle i forskellige beregningsopgaver og applikationer i den virkelige verden, herunder informationssøgning, dataanalyse, beslutningsprocesser og mere.

Søge efter terminologier:

Målelement:

Ved søgning er der altid et specifikt målelement eller emne, som du ønsker at finde i dataindsamlingen. Dette mål kan være en værdi, en post, en nøgle eller en hvilken som helst anden dataenhed af interesse.



Søg rum:

Søgerummet refererer til hele samlingen af ​​data, inden for hvilken du leder efter målelementet. Afhængigt af den anvendte datastruktur kan søgeområdet variere i størrelse og organisation.

Kompleksitet:

Søgning kan have forskellige niveauer af kompleksitet afhængigt af datastrukturen og den anvendte algoritme. Kompleksiteten måles ofte i tids- og pladsbehov.

Deterministisk vs. ikke-deterministisk:

Nogle søgealgoritmer, f.eks binær søgning , er deterministiske, hvilket betyder, at de følger en klar, systematisk tilgang. Andre, såsom lineær søgning, er ikke-deterministiske, da de i værste fald kan have brug for at undersøge hele søgerummet.



Vigtigheden af ​​at søge i DSA:

  • Effektivitet: Effektive søgealgoritmer forbedrer programmets ydeevne.
  • Datahentning: Find og hent hurtigt specifikke data fra store datasæt.
  • Databasesystemer: Muliggør hurtig forespørgsel i databaser.
  • Problemløsning: Anvendes i en bred vifte af problemløsningsopgaver.

Anvendelser af søgning:

Søgealgoritmer har adskillige applikationer på tværs af forskellige felter. Her er nogle almindelige applikationer:

  • Informationssøgning: Søgemaskiner som Google, Bing og Yahoo bruger sofistikerede søgealgoritmer til at hente relevant information fra enorme mængder data på nettet.
  • Databasesystemer: Søgning er grundlæggende i databasesystemer til at hente specifikke dataposter baseret på brugerforespørgsler, hvilket forbedrer effektiviteten i datahentning.
  • E-handel: Søgning er afgørende i e-handelsplatforme for, at brugerne hurtigt kan finde produkter baseret på deres præferencer, specifikationer eller søgeord.
  • Netværk: I netværk bruges søgealgoritmer til at dirigere pakker effektivt gennem netværk, finde optimale stier og administrere netværksressourcer.
  • Kunstig intelligens: Søgealgoritmer spiller en afgørende rolle i AI-applikationer, såsom problemløsning, spil (f.eks. skak) og beslutningsprocesser
  • Mønster genkendelse: Søgealgoritmer bruges i mønstermatchningsopgaver, såsom billedgenkendelse, talegenkendelse og håndskriftsgenkendelse.

Grundlæggende om søgealgoritmer:

  • Introduktion til søgning – Datastruktur og algoritmevejledning
  • Vigtigheden af ​​at søge i datastruktur
  • Hvad er formålet med søgealgoritmen?

Søgealgoritmer:

  • Lineær søgning
  • Sentinel lineær søgning
  • Binær søgning
  • Meta binær søgning | Ensidet binær søgning
  • Ternær søgning
  • Hop Søg
  • Interpolationssøgning
  • Eksponentiel søgning
  • Fibonacci-søgning
  • Den allestedsnærværende binære søgning

Sammenligninger mellem forskellige søgealgoritmer:

  • Lineær søgning vs binær søgning
  • Interpolationssøgning vs binær søgning
  • Hvorfor foretrækkes binær søgning frem for ternær søgning?
  • Er Sentinel Linear Search bedre end normal Linear Search?

Biblioteksimplementeringer af søgealgoritmer:

  • Binære søgefunktioner i C++ STL (binær_søgning, nedre_grænse og øvre_grænse)
  • Arrays.binarySearch() i Java med eksempler | Sæt 1
  • Arrays.binarySearch() i Java med eksempler | Sæt 2 (Søg i underarray)
  • Collections.binarySearch() i Java med eksempler

Lette problemer ved søgning:

  • Find de tre største elementer i en matrix
  • Find det manglende nummer
  • Find det første gentagende element i en række heltal
  • Find det manglende og gentagende nummer
  • Søg, indsæt og slet i et sorteret array
  • Tæl 1'ere i et sorteret binært array
  • To elementer, hvis sum er tættest på nul
  • Find et par med den givne forskel
  • k største (eller mindste) elementer i en matrix
  • K. mindste element i et række- og kolonnevis sorteret 2D-array
  • Find almindelige elementer i tre sorterede arrays
  • Loft i et sorteret array
  • Gulv i et sorteret array
  • Find det maksimale element i en matrix, som først er stigende og derefter faldende
  • Givet en matrix af størrelse n og et tal k, find alle elementer, der vises mere end n/k gange

Mellemstore problemer ved søgning:

  • Find alle trillinger med nulsum
  • Find det element, før hvilket alle elementer er mindre end det, og hvorefter alle er større
  • Find den største parsum i et usorteret array
  • K'th mindste/største element i usorteret array
  • Søg efter et element i et sorteret og roteret array
  • Find minimumselementet i et sorteret og roteret array
  • Find et topelement
  • Maksimum og minimum af et array ved brug af minimum antal sammenligninger
  • Find et fast punkt i en given matrix
  • Find de k hyppigste ord fra en fil
  • Find k elementer, der er tættest på en given værdi
  • Givet en sorteret matrix og et tal x, find det par i matrix, hvis sum er tættest på x
  • Find det nærmeste par fra to sorterede arrays
  • Find de tre nærmeste elementer fra givne tre sorterede arrays
  • Binær søgning efter rationelle tal uden at bruge flydende komma-aritmetik

Svære problemer med at søge:

  • Medianen af ​​to sorterede arrays
  • Medianen af ​​to sorterede arrays af forskellig størrelse
  • Søg i et næsten sorteret array
  • Find positionen af ​​et element i en sorteret række af uendelige tal
  • Givet et sorteret og roteret array, find om der er et par med en given sum
  • K'th mindste/største element i usorteret array | Worst case Lineær Tid
  • K’største element i et vandløb
  • Bedste første søgning (informeret søgning)

Hurtige links:

  • 'Øvningsproblemer' om søgning
  • 'Quizz' om søgning

Anbefalede:

  • Lær datastruktur og algoritmer | DSA Tutorial