Водич за алгоритм клизног прозора и како га имплементирати у Го

Водич за алгоритм клизног прозора и како га имплементирати у Го
Читаоци попут вас помажу у подршци МУО. Када обавите куповину користећи везе на нашем сајту, можда ћемо зарадити провизију за партнере. Опширније.

Извођење операција над низовима бројева и знакова је кључни аспект програмирања. Алгоритам клизног прозора је један од стандардних алгоритама за то.





Виндовс 7 треба заувек да се искључи
МУО Видео дана ПОМЕРИТЕ ДА БИСТЕ НАСТАВИЛИ СА САДРЖАЈЕМ

То је елегантно и свестрано решење које је нашло свој пут у више домена. Од манипулације стринговима до обиласка низа и оптимизације перформанси, овај алгоритам може играти улогу.





Дакле, како функционише алгоритам клизног прозора и како га можете имплементирати у Го?





Разумевање алгоритма клизног прозора

Постоје много врхунских алгоритама које је корисно знати као програмер, а клизни прозор је један од њих. Овај алгоритам се врти око једноставног концепта одржавања динамичког прозора над низом података, за ефикасну обраду и анализу подскупова тих података.

Алгоритам можете применити када решавате рачунарске проблеме који укључују низове, низове или низове података.



Основна идеја која стоји иза алгоритма клизног прозора је да се дефинише прозор фиксне или променљиве величине и да се помера кроз улазне податке. Ово вам омогућава да истражите различите подскупове улаза без сувишних прорачуна који могу ометати перформансе.

Ево визуелног приказа како то функционише:





  Два приказа која приказују скуп бројева. Клизни прозор који садржи 3 броја је истакнут на сваком, корак даље у другом случају.

Границе прозора могу се прилагодити према захтевима специфичног проблема.

Имплементација алгоритма клизног прозора у Го

Можете користити популарни проблем кодирања да научите како алгоритам клизног прозора функционише: проналажење највећег збира подниза са датом дужином.





Циљ овог проблема узорка је да се пронађе подниз величине к чији се елементи сабирају до највеће вредности. Функција решења узима два параметра: улазни низ и позитиван цео број који представља к .

Нека је низ узорака бројевима , као што показује код испод:

9АД11ЕДД5ЕЕЕЦФБ8Ф536Б2Е46Б26463БД93447Ф7

И нека је дужина подниза к , са вредношћу 3:

944257Е5Д52ДЕ95Е102Ф3Ц21778617Б454Е3АЦ2А

Затим можете декларисати функцију да пронађете максималан збир поднизова дужине к:

ФФ4ЦД33Ф0Ц26ЕЕ6А2А615718ФЦ46Ф1Ф875890ББ1

Можда мислите да прозор мора бити низ који чува копије циљних елемената. Иако је то опција, делује лоше.

Уместо тога, само треба да дефинишете границе прозора да бисте га пратили. На пример, у овом случају, први прозор ће имати почетни индекс 0 и крајњи индекс к-1 . У процесу померања прозора, ажурираћете ове границе.

Први корак за решавање овог проблема је добијање суме првог подниза величине к. Додајте следећи код својој функцији:

1ЦФБ8ФФ9Д194Ц9АФ76651Ц09БФЦЦ320381948063

Код изнад декларише неопходне променљиве за алгоритам и проналази збир првог прозора у низу. Затим се иницијализује макАмоунт са збиром првог прозора.

помоћник за ажурирање оперативног система Виндовс 10 наставља да се поново инсталира

Следећи корак је да помери прозор итерацијом кроз бројевима низ из индекса к до краја. У сваком кораку померања прозора:

  1. ажурирање виндовСум додавањем тренутног елемента и одузимањем елемента у виндовСтарт .
  2. ажурирање макАмоунт ако је нова вредност од виндовСум је већи од њега.

Следећи код имплементира клизни прозор. Додајте га у макимумСубарраиСум функција.

3066ФА145Е190Д38Е6740Ц46А4Д52Д20Е9Б9Ц140

Када се петља заврши, имаћете највећу суму макАмоунт , који можете вратити као резултат функције:

АДЦ74258275БЕ0Д95Ц32Б2Б43Ц10ДДЦ269БФ94ФФ

Ваша комплетна функција би требало да изгледа овако:

2А4Е5005ДБ99843907705Ц6Ц71269Ф5048Е66Д12

Можете дефинисати главну функцију за тестирање алгоритма, користећи вредности од бројевима и к од раније:

Ф8ЦЦ5АДЕ2Ф9ФЕА6Ф3Д72Ц922Ф09ЕБ56Ц27БЕ895Е

Излаз у овом случају ће бити 19 , што је збир подниза [4, 8, 7], који је највећи.

Сада можете да примените исту технику на сличне проблеме, чак и на другим језицима, као што је руковање поновљеним елементима унутар прозора помоћу Јава хеш мапа , на пример.

Оптимални алгоритми резултирају ефикасним апликацијама

Овај алгоритам је сведочанство о моћи ефикасних решења када је у питању решавање проблема. Клизни прозор максимизира перформансе и елиминише непотребна израчунавања.

Добро разумевање алгоритма клизног прозора и његове имплементације у Го омогућава вам да се ухватите у коштац са сценаријима из стварног света када правите апликације.