X + Y sortering

Olöst problem inom datavetenskap :

Finns det en sorteringsalgoritm snabbare än ?

Geometrisk visualisering av sorteringsproblemet Ingångsmängderna och representeras av uppsättningarna av vertikala och horisontella svarta linjer (respektive), och målet med problemet är att sortera korsningspunkterna efter positionerna för den röda diagonalen linjer genom dem.

Inom datavetenskap är sortering med problemet med att sortera talpar efter deras summor . Tillämpningar av problemet inkluderar minimering av transitpriser , VLSI -design och gles polynommultiplikation. Liksom med jämförelsesortering och heltalssortering mer generellt, kan algoritmer för detta problem endast baseras på jämförelser av dessa summor, eller på andra operationer som endast fungerar när indata är små heltal.

Det är okänt om detta problem har en jämförelsebaserad lösning vars körtid är asymptotiskt snabbare än att sortera en ostrukturerad lista med lika många objekt. Därför har forskningen kring problemet fokuserat på två tillvägagångssätt för att lösa frågan om en sådan förbättring är möjlig: utvecklingen av algoritmer som förbättrar ostrukturerad sortering i deras antal jämförelser snarare än i deras totala körtid, och nedre gränser för antal jämförelser baserat på räkning av celler i underavdelningar av högdimensionella utrymmen. Båda tillvägagångssätten är historiskt knutna samman, eftersom de första algoritmerna som använde få jämförelser var baserade på svagheten i de cellräknande nedre gränserna.

Problembeskrivning och historik

Indata till sorteringsproblemet samlingar av nummer och av samma längd. Problemets utdata är samlingen av alla par av ett tal från och ett tal från ordnade i sorterad ordning efter summan av varje par. Som ett litet exempel, för ingångarna och , bör utgången vara listan med par

av ett element från och ett element från listade i sorterad ordning efter deras summor av par
Ett sätt att lösa problemet skulle vara att konstruera paren som ska sorteras (den kartesiska produkten av de två samlingarna) och använda dessa par som indata till en standardjämförelse- sorteringsalgoritm som merge sort eller heapsort . När ingångarna har längden bildar de par, och tiden för att sortera paren på detta sätt är . När det gäller dess stora O-notation är denna metod den snabbaste kända algoritmen för -sortering. Huruvida det finns en snabbare algoritm är ett öppet problem , ställd av Elwyn Berlekamp före 1975.

En variant av problemet sorterar summamängden , uppsättningen av summor av par, med dubblettsummor kondenserade till ett enda värde . För denna variant kan storleken på summamängden vara betydligt mindre än och utdatakänsliga algoritmer för att konstruera den har undersökts.

Ansökningar

Steven Skiena berättar om en praktisk tillämpning vid minimering av transitpriser , ett exempel på problemet med den kortaste vägen : hitta den billigaste flygbiljetten med två hopp mellan två givna städer, från en indata som beskriver både kostnaden för varje hopp och vilka hopppar som kan vara kombineras till en enda biljett. Skienas lösning består av att sortera humlepar efter deras totala kostnad som en instans av sorteringsproblemet För att generera de sorterade paren i denna ordning använder Skiena en prioriterad kö av par, som initialt bara innehåller ett enda par, det som består av de två billigaste humlen. Sedan, när ett par tas bort från kön och visar sig vara otillåtet, läggs ytterligare två par till, med ett av dessa två par som kombinerar med nästa hopp efter i en sorterad lista över hopp till destinationen, och det andra paret som kombinerar med nästa hopp efter i en sorterad lista med hopp från starten. På så sätt kan varje efterföljande par hittas i logaritmisk tid, och endast paren fram till det första tillåtna behöver sorteras.

-sortering är den dyraste subrutinen i en algoritm för ett problem i VLSI -design, där man måste placera två underenheter av en VLSI-krets sida vid sida längs en kommunikationskanal för att minimera bredden på kanalen som behövs för att dra par av ledningar från en underenhet till den andra. Eftersom en underenhet kontinuerligt förskjuts i förhållande till den andra, ändras kanalbredden endast vid diskreta positioner där ändarna av två ledningar är i linje med varandra, och hitta den sorterade ordningen för dessa positioner för att beräkna sekvensen av ändringar av bredden kan utföras genom sortering. Om detta sorteringsproblem kunde påskyndas, skulle det också påskynda denna VLSI-designuppgift.

En annan tillämpning involverar polynommultiplikation för polynom av en enda variabel som kan ha många färre termer än deras grader . Produkten av två polynom kan uttryckas som en summa av produkter av termpar, ett från varje polynom, och att placera dessa term-för-term-produkter i gradordning innebär att sortera dem efter summan av grader. Till exempel, instansen av sortering med som ges som ett exempel ovan motsvarar multiplikationen av två tretermpolynom för att producera ett niotermspolynom :

Graderna är alltid heltal, så heltalsbaserade algoritmer för -sortering kan användas. Men för polynom vars antal termer är jämförbara med deras grad, FFT-baserade polynommultiplikationsalgoritmer vara betydligt effektivare än term-för-term multiplikation.

Antal beställningar

En välkänd nedre gräns för ostrukturerad sortering, i beslutsträdsmodellen , är baserad på det faktoriella antalet sorterade order som en ostrukturerad lista kan ha. Eftersom varje jämförelse i bästa fall kan minska antalet möjliga beställningar med en faktor två, kräver sortering ett antal jämförelser som är minst lika med den binära logaritmen för faktorialen, som är . Tidigt arbete med -sortering följde ett liknande tillvägagångssätt genom att fråga hur många olika sorterade ordningar som är möjliga för detta problem, och bevisa att detta nummer är högst . Men eftersom dess binära logaritm är högst mycket mindre än de kända tidsgränserna för sortering, denna metod kan bara leda till svaga nedre gränser för antalet jämförelser.

Beviset för denna gräns relaterar -sortering till komplexiteten hos ett arrangemang av hyperplan i högdimensionell geometri. De två indatasamlingarna för sorteringsproblemet -tal, som alternativt kan tolkas som de kartesiska koordinaterna för en punkt i - dimensionellt utrymme . Detta utrymme kan delas in i celler, så att inom en enda cell alla punkter motsvarar indata som producerar samma sorterade ordning. För denna underindelning ligger varje gräns mellan två celler inom ett hyperplan definierat av en likhet av par , där och är två par vars ordning ändras från en intilliggande cell till den andra. Dessa hyperplan genereras antingen av två disjunkta par, eller så har de de förenklade formerna eller , så antalet distinkta hyperplan som kan bestämmas på detta sätt är

Antalet celler som detta antal hyperplan kan dela ett utrymme med dimensionen i är
har mängden olika möjliga sorteringsordningar.

En liknande analysstil har varit mer framgångsrik när det gäller att utesluta snabba lösningar på vissa generaliseringar av -sortering, genom att visa att de har för många beställningar att sortera snabbt. I synnerhet har Harper et al. (1975) och separat och sedan konstruerar en tvådimensionell matris av värdena för som sorteras både efter rader och efter kolumner innan du använder denna delvis sorterade data för att slutföra typen av . Denna idé att använda en radsorterad och kolumnsorterad matris ligger till grund för metoden som Skiena använder i transportapplikationen och den kan minska antalet jämförelser med en konstant faktor i förhållande till naiv jämförelsesortering. Men för matriser vars rader och kolumner är sorterade på detta sätt är antalet möjliga sorterade ordningsföljder av hela matrisen mycket större än så stort att alla jämförelsesorteringsalgoritmer som kan fungera för godtyckliga matriser som är sorterade efter rader och kolumner kräver fortfarande jämförelser. Därför, om -sorteringsproblemet ska lösas snabbt, måste lösningen använda ytterligare information om uppsättningen utöver denna matrisordning.

Antal jämförelser

För det klassiska jämförelsesorteringsproblemet ligger tiden för att sortera och antalet jämförelser som behövs för att sortera inom konstanta faktorer av varandra. Men för -sortering är antalet jämförelser mindre än den bästa kända tidsgränsen: Michael Fredman visade 1976 att -sortering kan göras med endast jämförelser. Mer allmänt visade han att vilken uppsättning , vars sorterade ordning redan har begränsats till en familj av beställningar, kan sorteras med hjälp av jämförelser, genom en form av binär infogningssort . För sorteringsproblemet och , så och Fredmans gräns innebär att endast jämförelser behövs. I Fredmans metod kan dock tiden som behövs för att bestämma vilka jämförelser som ska utföras vara betydligt högre än gränsen för antalet jämförelser.

Den första explicita algoritmen som uppnår både jämförelser och totalt komplexitet publicerades sexton år efter Fredman av Lambert (1992) . Algoritmen utför följande steg:

  1. Sortera rekursivt de två uppsättningarna och .
  2. Använd ekvivalensen för att härleda de sorterade ordningsföljderna av och utan ytterligare jämförelser .
  3. Slå samman de två uppsättningarna och till en enda sorterad ordning, med hjälp av ett antal jämförelser linjära i deras totala storlek.
  4. Använd den sammanslagna ordningen och ekvivalensen för att härleda den sorterade ordningen för utan ytterligare jämförelser.

Den del av algoritmen som rekursivt sorterar (eller motsvarande ) gör det genom följande steg:

  1. Dela upp i två lika stora underlistor och .
  2. Sortera rekursivt och
  3. Härled ordningen på genom att endast använda jämförelser från ett enda sammanfogningssteg enligt ovan.
  4. Slå samman de sorterade resultaten , och tillsammans.

Antalet jämförelser som behövs för att utföra denna rekursiva algoritm på en ingång av objekt kan analyseras med hjälp av återfallsrelationen

där termen för återkomsten räknar antalet jämförelser i de rekursiva anropen till algoritmen för att sortera och och termen räknar antalet jämförelser som används för att slå samman resultaten. Mastersatsen återfallsrelationer av denna form visar ) Den totala tidskomplexiteten är långsammare, , eftersom av stegen i algoritmen som använder redan gjorda jämförelser för att sluta sig till beställningar av andra uppsättningar. Dessa steg kan utföras i tiden genom att använda en standardjämförelse-sorteringsalgoritm med dess jämförelsesteg ersatta av de angivna slutledningarna.

Om endast jämförelser mellan element i är tillåtna, så finns det också en matchande nedre gräns för på antalet jämförelser, men med mer allmänna jämförelser som involverar linjära kombinationer av konstant antal element, behövs endast

Icke-jämförelsebaserade algoritmer

Precis som heltalssortering kan vara snabbare än jämförelsesortering för tillräckligt små heltal, gäller detsamma för -sortering. I synnerhet, med heltalsinmatningar i intervallet från till någon övre gräns , kan problemet lösas i operationer med hjälp av den snabba Fouriertransformen .

Relaterade problem

Flera andra problem inom beräkningsgeometri har likvärdig eller svårare komplexitet till -sortering, inklusive att konstruera Minkowski-summor av trapppolygoner, hitta korsningspunkterna för ett arrangemang av linjer i sorterad ordning efter deras -koordinater, listar par av punkter i sorterad ordning efter deras avstånd, och testar om en rätlinjig polygon kan översättas för att passa in i en annan.

Problemet med att testa om två av paren i sorteringsproblemet I sin tur kan den användas för att lösa 3SUM -problemet, vilket innebär att det är osannolikt att det har en starkt subkvadratisk algoritm.