esittely
Algoritmeissa, kuten elämässä, negatiivisuus voi olla vetovoimaa.
Harkitse ongelmaa löytää lyhin reitti kahden kaavion pisteen välillä - linkkien tai reunojen yhdistämien solmujen verkosto. Usein nämä reunat eivät ole keskenään vaihdettavissa: Kaaviossa voi olla tiekartta, jossa jotkut tiet ovat hitaampia kuin toiset tai joilla on korkeammat tietullit. Tietojenkäsittelytieteilijät ottavat huomioon nämä erot yhdistämällä kunkin reunan "painoon", joka kvantifioi kyseisen segmentin poikki liikkumisen kustannukset – olivatpa ne sitten aikaa, rahaa tai jotain muuta. 1950-luvulta lähtien he ovat tienneet kuinka löytää lyhyimmät polut käytännössä niin nopeasti kuin teoriassa mahdollista, olettaen, että kaikki painot ovat positiivisia lukuja.
Mutta joissakin kaavioissa painot voivat olla negatiivisia – yhden segmentin kulkeminen voi kompensoida toisen segmentin kulkemisen kustannuksia. Ajatellaanpa esimerkiksi jakelukuljettajaa, jonka on tasapainotettava kaasun ja tietullien hinta (positiivisilla painoilla) ja pakettien kuljettamisesta saadut tulot (edastettu negatiivisilla painoilla). Tällaisissa tapauksissa nopein tunnettu lyhimmän polun algoritmi ei toimi. Vuosikymmenten ajan nopeat algoritmit lyhimpien reittien löytämiseksi negatiivisen painon graafisista kaavioista ovat olleet vaikeasti käytettävissä.
Nyt tietotekniikan tutkijoiden trio on ratkaissut tämän pitkäaikaisen ongelman. Heidän uudet algoritmi, joka löytää lyhimmät reitit kaavion läpi tietystä "lähde"solmusta jokaiseen toiseen solmuun, vastaa melkein nopeutta, jonka positiiviset algoritmit saavuttivat niin kauan sitten.
Lisäksi uusi lähestymistapa käyttää vuosikymmeniä vanhoja matemaattisia tekniikoita välttäen kehittyneempiä menetelmiä, jotka ovat hallinneet nykyaikaista graafiteoriatutkimusta.
"En vain voinut uskoa, että näin yksinkertainen algoritmi on olemassa", sanoi Maximilian Probst Gutenberg, tietojenkäsittelytieteilijä Sveitsin Federal Institute of Technology Zürichissä. "Kaikki se on ollut siellä 40 vuotta. Tarvittiin vain joku todella fiksu ja päättäväinen saada kaikki toimimaan."
Ahneuden rajat
Tarina alkaa vuodesta 1956, jolloin hollantilainen tietojenkäsittelytieteilijä Edsger Dijkstra kehitti nopean algoritmin löytääkseen lyhimmät polut kaaviosta, jossa on vain positiivinen paino. Ymmärtääksesi sen, kuvittele, että aloitat lähteestä ja tutkit kuvaajaa yksi solmu kerrallaan ja kirjoitat muistiin äskettäin löydettyjen reunojen painot edetessäsi. Aina kun vierailet solmussa, tee alustavat arviot lyhimmistä poluista lähteestä kuhunkin uuden solmun naapuriin ja päivitä olemassa olevat arviot, jos olet löytänyt uuden lyhyemmän polun. Päättääksesi, missä tutkimattomassa solmussa vierailla seuraavaksi, käytä niin sanottua ahnetta strategiaa: Siirry siihen, mikä on lähimpänä lähdettä nykyisen arviosi mukaan.
Positiivisilla painoilla polku, jonka Dijkstran algoritmi kulkee käydäkseen jokaisessa solmussa ensimmäistä kertaa, on todella lyhin. On helpointa nähdä, että tämä pitää paikkansa heti ensimmäisellä askeleella. Kuvittele kaksi solmua A ja B, joita yhdistää reuna, jonka paino on 2. Jos A on lähdesolmu ja jokaisella toisella sitä koskettavalla reunalla on suurempi paino, niin suoran polun A:sta B:hen on oltava lyhin mahdollinen polku, joka yhdistää nämä kaksi pistettä , koska minkä tahansa muun polun ensimmäinen segmentti olisi jo pidempi. Samanlainen päättely toimii joka vaiheessa. Algoritmin ei koskaan tarvitse katsoa taaksepäin, joten se taatusti päättyy, kun kaavio on käyty läpi kerran – juuri siksi se tekee siitä niin nopean.
Mutta negatiiviset painot aiheuttavat ongelmia Dijkstran ahneelle strategialle. Harkitse jälleen kuljettajaamme. Suora reitti A:sta B:hen, joka tuottaa pienen voiton, voi ansaita vähemmän rahaa kuin kiertotie, jolla on suuri voitto jossain. "Et voi tehdä päätöksiä pelkästään paikallisten tietojen perusteella", sanoi Sanjeev Khanna, tietojenkäsittelytieteilijä Pennsylvanian yliopistosta. "Sinun on ehkä tehtävä useita näennäisesti epäoptimaalisia liikkeitä saadaksesi vihdoin todellisen palkinnon."
Negatiivisten kaavioiden parissa työskentelevät tietojenkäsittelytieteilijät yrittivät vuosikymmeniä sovittaa Dijkstran algoritmin nopeuden samankaltaisiin "kombinatorisiin" algoritmeihin. Näihin sisältyy diskreettejä operaatioita, kuten laskentamahdollisuuksia, painojen muokkaamista ja reunojen selektiivistä poistamista, jotka kuvastavat alla olevan graafin erillistä rakennetta. Edistyminen kuitenkin hidastui 1990-luvulla. Viime aikoina tutkijat ovat käyttäneet "jatkuvan optimoinnin" algoritmeja, jotka lainaavat temppuja laskennasta. Valitettavasti tuloksena syntyneet nopeudet ovat olleet rajallisia, ja ne ovat usein tulleet yksinkertaisuuden kustannuksella.
Katkaise sykli
Kesällä 2021 kaksi tietotekniikan tutkijaa, joista oli tullut kollegoita Kööpenhaminan yliopistossa - Danupon Nanongkai ja Christian Wulff-Nilsen — etsivät aihetta yhteiseen tutkimusprojektiin. "Christian sanoi: "Oi, muuten, olin lomalla, ja sen vuoksi yritin ajatella jotain hyvin kunnianhimoista", muistelee Nanongkai, joka työskentelee nyt Max Planck Institute for Informaticsissa Saarbrückenissä, Saksassa. He ratkaisivat negatiivisen painon lyhimpien polkujen ongelman ja kutsuivat Aaron Bernstein Rutgersin yliopistosta liittymään heihin.
Kaikki kolme tutkijaa olivat muiden ongelmien kombinatoristen graafialgoritmien asiantuntijoita, ja he halusivat nähdä, kuinka pitkälle nämä suhteellisen vanhat lähestymistavat voisivat viedä ne. "On itse asiassa tiettyä vapautta työskennellä ongelman parissa, joka on kunnianhimoinen ja joka on ollut avoin pitkään", Bernstein sanoi.
Trio aloitti jättämällä väliaikaisesti huomioimatta mahdollisten kaavioiden osajoukon: ne, jotka sisältävät negatiivisia syklejä. Nämä ovat polkuja, jotka palaavat takaisin lähtökohtaan kulkiessaan reunojen sarjan, joiden painot muodostavat negatiivisen luvun. Kaaviossa, jossa negatiiviset syklit ovat saavutettavissa aloituspisteestä, lyhimmän polun käsitys hajoaa, koska voit tehdä etäisyydestä mihin tahansa solmuun niin negatiiviseksi (tai kannattavaksi) kuin haluat ottamalla toistuvia kierroksia negatiivisen syklin ympärillä ennen matkalla määränpäähäsi.
Tutkijat epäilivät, että pitkät negatiiviset polut olivat pääasiassa vastuussa ongelman vaikeuttamisesta. Niinpä he alkoivat keskittyä läheisten solmujen tiiviisiin ryhmiin, jotka eivät voi sisältää pitkiä negatiivisia polkuja: Tämä johtuu siitä, että jos kaksi pistettä on yhdistetty lyhyellä positiivisella polulla, pitkän negatiivisen polun lisääminen niiden välille loisi negatiivisen syklin. Tiukan klusterin sisällä "se tosiasia, että kaikki ovat lähellä toisiaan positiivisessa mielessä, antaa sinulle hyödyllistä tietoa myös negatiivisista reunoista", Bernstein sanoi. "Se kertoo, että asiat eivät voi olla liian negatiivisia."
Useimmat kaaviot sisältävät monia sellaisia tiiviitä klustereita, jotka ovat vain heikosti yhteydessä toisiinsa. Jos tutkijat pystyisivät paikantamaan kaikki klusterit, he epäilivät, että he voisivat kehittää tavan löytää lyhyimmät polut nopeasti kustakin. Sieltä heidän on ehkä helpompi yhdistää yksittäisiä klustereita ja löytää lyhimmät polut alkuperäisestä kaaviosta. Mutta se vaatisi nopeasti havaitsemaan minkä tahansa graafin alueet, joissa solmut ovat lähellä toisiaan - mitä he eivät tienneet miten tehdä. Avain osoittautui tekniikaksi, joka sai alkunsa täysin erilaisesta graafiteorian haarasta.
Kaavioiden leikkaaminen
Tietojenkäsittelytieteilijät kehittivät 1980-luvulla tekniikan, jota kutsutaan halkaisijaltaan matalan hajotuksen avulla poimimaan kaaviosta tiukat klusterit ja tunnistamaan poistettavat reunat näiden klusterien erottamiseksi. Tämä tekniikka tarjoaa tavan jakaa kuvaajat itsenäisiin osiin. Se keksittiin helpottamaan "hajautettuja" algoritmeja, joissa laskennat suoritetaan rinnakkain graafin eri osissa, joten se oli vähemmän hyödyllinen lyhimmän polun algoritmeille, joilla ei ole tätä ominaisuutta.
Bernstein, Nanongkai ja Wulff-Nilsen ymmärsivät, että halkaisijaltaan pieni hajoaminen voisi auttaa heitä tunnistamaan klustereita ilman paljon keskittynyttä negatiivisuutta. Valitettavasti tavalliset pienen halkaisijan hajoamisalgoritmit toimivat vain suuntaamattomissa kaavioissa - niissä, joissa jokainen reuna voidaan kulkea molempiin suuntiin. Negatiivisten lyhimpien polkujen ongelmalla on puolestaan järkeä vain suunnatuissa kaavioissa, joissa jokainen reuna on yksisuuntainen katu. (Muuten yksi suuntaamaton negatiivinen reuna luo negatiivisen syklin, joka koostuu toistuvista hyppyistä edestakaisin kyseisen reunan poikki.) Jos tutkijat haluaisivat käyttää halkaisijaltaan pientä hajotusta, heidän olisi mukautettava sitä.
Näin he tekivät uudessa lehdessään. Innoittamana aikaisempi työ jossa Bernstein ja Wulff-Nilsen olivat tehneet yhteistyötä Probst Gutenbergin kanssa, he kehittivät halkaisijaltaan pienen hajotuksen kanssa analogisen murtomenetelmän suunnatuille graafiille. Proseduuri pilkkoo mielivaltaisen suunnatun graafin sarjaksi tiiviitä klustereita käyttämällä satunnaista prosessia poistamaan vain kourallinen reunoja. Myöhemmin nämä klusterit yhdistetään harvemmalla verkolla, jossa kaikki reunat osoittavat samaan suuntaan. Tällaista verkkoa kutsutaan suunnatuksi asykliseksi graafiksi tai DAG:ksi.
Ajattele DAG:ta kuin puroa, jossa vesi voi virrata eri reittejä: Jotkut polut virtaavat sisään eri lähteistä, toiset lähtevät eri suuntiin, ja toiset voivat hajota ja sulautua takaisin yhteen. Mutta mikään ei koskaan virtaa taaksepäin, joten syklejä ei ole; tämä tekee DAG:ista paljon helpompaa työskennellä.
Tutkijat ovat jo pitkään tienneet kuinka löytää nopeasti lyhyimmät polut DAG:ista jopa negatiivisilla painoilla. Joten murtotekniikka mahdollisti kolmen tutkijan pelkistämisen minkä tahansa suunnatun graafin kahden erikoistapauksen yhdistelmäksi – DAG:t ja tiukat klusterit – joita kumpaakin oli helppo käsitellä.
Uusi lyhimpien polkujen algoritmi käyttää toistuvasti murtomenettelyä kaavion jakamiseen tiiviiksi sidoksiksi, jotka on yhdistetty DAG:n avulla. Sitten se hajottaa nämä klusterit yhä pidemmälle. Prosessin lopussa sisimmän tason klusterit ovat mahdollisimman tiiviisti yhteydessä toisiinsa. Osasyynä algoritmi on niin nopea, että se ei vaadi monta iteraatiota murtaakseen täysin edes erittäin suuren kaavion, samoin kuin suuren luvun leikkaaminen kohtuulliseen kokoon ei kestä kauan, jos jaat toistuvasti. se puoliksi.
Kun kaavio oli täysin eritelty tällä tavalla, tutkijat pystyivät nopeasti löytämään lyhimmät polut kaavion jokaisen osan läpi. Sisäkkäisen graafirakenteen sisimmän tason tiukoille klusteille tämä oli helppoa – niissä ei ollut käytännössä yhtään negatiivisuutta jäljellä. Ja tutkijat tiesivät jo, kuinka löytää lyhyimmät polut niihin liittäviltä DAG-osuuksilta.
Lopuksi algoritmi laskee takaisin murtumisprosessin eliminoimat reunat ja laskee niiden vaikutukset lyhimmille reiteille. Tutkijat osoittivat, että heidän prosessinsa satunnaisten reunojen poistamiseksi vaatisi melkein aina vain muutaman poiston "taaksepäin" olevien reunojen poistamiseksi - sellainen, joka muuttaisi heidän DAG:nsa kaavioksi, jossa on suuria syklejä. Tämä teki äärimmäisen epätodennäköiseksi, että lyhin polku kulkisi liian monien tällaisten taaksepäin segmenttien läpi, joten he pystyivät ratkaisemaan tämän hankalan viimeisen vaiheen yhdistämällä kaksi 1950-luvun oppikirjamenetelmää: Dijkstran algoritmin ja ensimmäisen negatiivisen painotuksen kuvaajille kehitetyn algoritmin.
"Se on erittäin näppärä yhdistelmä näistä ideoista", Khanna sanoi. Algoritmi on ensimmäinen negatiivisen painon kuvaajille, joka suoritetaan "lähes lineaarisessa" ajassa – mikä tarkoittaa, että sen suoritusaika on lähes verrannollinen siihen aikaan, joka tarvitaan vain kaikkien reunojen laskemiseen, nopein se voi olla.
Entä kaaviot negatiivisilla sykleillä, jotka tutkijat päättivät jättää alussa huomiotta? Viimeisteltyään lyhimmän polun algoritmiaan he osoittivat, että se voisi toimia myös nopeana algoritmina negatiivisten syklien määrittämiseen. Käytännössä mikään kaavio ei ollut sen ulottumattomissa.
Rinnakkaiset polut
Bernstein esitteli ryhmän tuloksen 2022 Foundations of Computer Science -konferenssissa, jossa heidän uutta algoritmia kuvaava käsikirjoituksensa katsottiin yhdeksi kahdesta parhaasta artikkelista. The muuta paperia Sattui myös kuvaamaan uuden lähes lineaarisen ajan algoritmin pitkäaikaisen graafiteorian ongelman ratkaisemiseksi.
Tämä Probst Gutenbergin ja viiden muun tutkijan kehittämä algoritmi käsitteli yleisempää ongelmaa, jota kutsutaan vähimmäiskustannusvirtaukseksi, jossa tavoitteena on optimoida kuljetus useiden rinnakkaisten reittien kautta ja jokaisella reunalla on maksimikapasiteetti sekä siihen liittyvät kustannukset. . Lyhimpien reittien ongelmat ovat minimaalisen kustannusvirran erikoistapaus, joten uutta minimikustannusvirtausalgoritmia voitaisiin käyttää myös negatiivisen painon lyhimpien reittien ongelman ratkaisemiseen lähes lineaarisessa ajassa, vaikkakin radikaalisti erilaisella lähestymistavalla.
Minimikustannusvirran parissa työskentelevä tiimi kehitti yleiskäyttöisen nopean algoritminsa käyttämällä kombinatoristen ja jatkuvan optimointitekniikoiden monimutkaista synteesiä, mikä tekee siitä käytännössä hankalan, ainakin tällä hetkellä. Vaikka Bernsteinin ja hänen kollegoidensa kombinatorinen algoritmi rajoittuukin tiettyyn ongelmaan, se saavuttaa lähes lineaarisen suoritusaikansa yksinkertaisuudesta tinkimättä.
"Tämä tässä paperissa on niin hämmästyttävää", sanoi Probst Gutenberg. "Voit selittää sen perustutkinto-opiskelijalle ja voit myös toteuttaa sen tietokoneellesi."
Tämän seurauksena tämä uusi algoritmi on herättänyt kiinnostusta kombinatorisiin lähestymistapoihin muihin graafiteorian ongelmiin. Nähtäväksi jää, mitkä ongelmat voidaan ratkaista nopeasti puhtaasti kombinatorisilla algoritmeilla ja mitkä todella vaativat viimeisen 20 vuoden aikana kehitettyjä jatkuvia tekniikoita.
"Tämä on filosofinen kysymys, jota yritän ymmärtää", Nanongkai sanoi. "Tämä lyhimmän polun ongelma antaa toivoa."
- SEO-pohjainen sisällön ja PR-jakelu. Vahvista jo tänään.
- Platoblockchain. Web3 Metaverse Intelligence. Tietoa laajennettu. Pääsy tästä.
- Lähde: https://www.quantamagazine.org/finally-a-fast-algorithm-for-shortest-paths-on-negative-graphs-20230118/
- 20 vuotta
- 2021
- 2022
- a
- Meistä
- Mukaan
- Tili
- saavutettu
- poikki
- todella
- asykliset
- sopeuttaa
- Lisää
- Jälkeen
- vastaan
- algoritmi
- algoritmit
- Kaikki
- jo
- aina
- kunnianhimoinen
- Muinainen
- ja
- Toinen
- erilleen
- lähestymistapa
- lähestymistavat
- noin
- liittyvä
- takaisin
- Balance
- perustua
- koska
- tulevat
- ennen
- alkoi
- Uskoa
- Bernstein
- PARAS
- välillä
- Jälkeen
- Iso
- lainata
- Sivuliike
- Tauko
- taukoja
- Rikki
- laskee
- nimeltään
- Koko
- tapaus
- tapauksissa
- tietty
- IVY
- lähellä
- tarkasti
- Cluster
- yhteistyötä
- työtovereiden
- yhdistelmä
- yhdistely
- Tulla
- laskelmat
- tietokone
- Tietojenkäsittelyoppi
- Keskitetty
- Konferenssi
- kytketty
- Kytkeminen
- Harkita
- Koostuu
- jatkuva
- Hinta
- voisi
- luoda
- Nykyinen
- Tällä hetkellä
- Leikkaus
- jaksoa
- PÄIVÄ
- vuosikymmeninä
- päätti
- päätökset
- toimitus
- kuvata
- määränpää
- määritetty
- kehittää
- kehitetty
- DID
- erot
- eri
- vaikea
- ohjata
- suunta
- löysi
- etäisyys
- ei
- Dont
- alas
- kuljettaja
- Dutch
- kukin
- voit
- helpompaa
- Helpoin
- reuna
- vaikutukset
- poistaa
- eliminoitu
- käytössä
- täysin
- olennaisesti
- arvio
- arviot
- Jopa
- EVER
- jokainen
- olemassa
- olemassa
- asiantuntijat
- Selittää
- Tutkiminen
- erittäin
- helpottamaan
- tuuletin
- FAST
- nopein
- Liitto-
- harvat
- lopullinen
- Vihdoin
- Löytää
- löytäminen
- löydöt
- Etunimi
- ensimmäistä kertaa
- virtaus
- virrat
- Keskittää
- löytyi
- Perustukset
- Vapaus
- alkaen
- täysin
- edelleen
- GAS
- general
- yleinen tarkoitus
- Saksa
- saada
- tietty
- antaa
- Go
- tavoite
- kaavio
- kaaviot
- Ahne
- taattu
- Gutenberg
- Puoli
- kourallinen
- kahva
- tapahtui
- Otsikko
- auttaa
- korkeampi
- toivoa
- Miten
- Miten
- Kuitenkin
- HTML
- HTTPS
- ideoita
- tunnistaa
- toteuttaa
- in
- Tulo
- itsenäinen
- henkilökohtainen
- tiedot
- innoittamana
- esimerkki
- Instituutti
- korko
- keksi
- aiheuttaa
- IT
- toistojen
- yhdistää
- tuloaan
- avain
- laji
- Tietää
- tunnettu
- suuri
- suurempi
- Taso
- elämä
- rajallinen
- rajat
- linkit
- paikallinen
- Pitkät
- pitkä aika
- pitkäaikainen
- kauemmin
- katso
- tehty
- tehdä
- TEE
- Tekeminen
- tapa
- monet
- kartta
- ottelu
- matemaattinen
- max
- maksimi
- välineet
- Sillä välin
- mennä
- menetelmät
- ehkä
- Moderni
- raha
- lisää
- liikkuu
- liikkuvat
- lähes
- negatiivinen
- naapurit
- verkot
- verkko
- Uusi
- seuraava
- solmu
- solmut
- Käsite
- numero
- numerot
- offset
- ONE
- avata
- Operations
- optimointi
- Optimoida
- alkuperäinen
- peräisin
- Muut
- Muuta
- muuten
- paketit
- pariksi
- Paperi
- paperit
- Parallel
- osa
- osat
- Ohimenevä
- Ohi
- polku
- Pennsylvania
- poimia
- Platon
- Platonin tietotieto
- PlatonData
- Kohta
- pistettä
- positiivinen
- mahdollisuuksia
- mahdollinen
- käytännössä
- harjoitusta.
- esitetty
- Ongelma
- ongelmia
- prosessi
- Voitto
- kannattava
- Edistyminen
- projekti
- omaisuus
- osoittautui
- tarjoaa
- puhtaasti
- Putting
- Kvantamagatsiini
- kysymys
- nopeasti
- radikaalisti
- satunnainen
- nopeasti
- tavoittaa
- todellinen
- tajusi
- reason
- kohtuullinen
- äskettäin
- vähentää
- heijastaa
- alueet
- suhteellisesti
- pysyi
- jäännökset
- toistuva
- TOISTUVASTI
- edustaa
- edustettuina
- edustaa
- edellyttää
- tarvitaan
- tutkimus
- Tutkijat
- vastuullinen
- rajoitettu
- johtua
- Saatu ja
- Palkinto
- tie
- Reitti
- ajaa
- juoksu
- Rutgers University
- uhraa
- Said
- sama
- tiede
- Tiedemies
- tutkijat
- haku
- osiot
- segmentti
- segmentit
- tunne
- Sarjat
- ratkaistu
- useat
- Lyhyt
- samankaltainen
- Yksinkertainen
- yksinkertaisuus
- koska
- single
- Koko
- pieni
- So
- SOLVE
- Solving
- jonkin verran
- Joku
- jotain
- jonnekin
- hienostunut
- lähde
- Lähteet
- erityinen
- erityinen
- nopeus
- LOITSU
- jakaa
- standardi
- Alkaa
- alkoi
- Aloita
- Vaihe
- Yhä
- Tarina
- Strategia
- virta
- katu
- rakenne
- opiskelija
- niin
- kesä
- Sveitsiläinen
- ottaa
- vie
- ottaen
- joukkue-
- tekniikat
- Elektroniikka
- kertoo
- oppikirja
- -
- Kaavio
- Lähde
- heidän
- asiat
- kolmella
- Kautta
- aika
- että
- yhdessä
- liian
- aihe
- liikuttava
- kuljettaa
- Matkustaminen
- ongelmia
- totta
- VUORO
- Sorvatut
- taustalla oleva
- ymmärtää
- yliopisto
- päivittäminen
- käyttää
- loma
- käytännössä
- halusi
- vesi
- WebP
- paino
- Mitä
- onko
- joka
- KUKA
- sisällä
- ilman
- Referenssit
- työskentely
- toimii
- olisi
- vuotta
- Voit
- Sinun
- zephyrnet
- Zurich