13/8/2015, 16:30

Fletninger og deres anvendelser

I det sidste indlæg definerede vi Jonesrepræsentationen, der til enhver fletning \(\sigma\) med \(n\) strenge og et valg af et tal \(d \in \{0,\dots,n-1\}\) knytter en matrix \(\eta(\sigma)\), der ydermere afhænger af en komplekst tal \(A\). I dette indlæg kigger vi nærmere på, hvor \(\eta\) kommer fra, hvad matricerne måske siger, og endelig en småsyret anvendelse af matricerne, der måske revolutionerer verden, som vi kender den. Og måske gør den ikke. Det finder vi ud af.



Fysisk baggrund


I det sidste indlæg introducerede vi det komplekse tal \(A\) sammen med nogle regler om, hvordan det spiller sammen med fletninger, uden at have motiveret hverken tallet eller reglerne. Det viser sig imidlertid, at både tallene og reglerne kan motiveres ved hjælp af matematisk fysik. Vi nævnte tidligere, at man kunne vælge at tænke på punkterne for enden af fletningen som beliggende i en plan, og at fletningerne i det tilfælde beskriver punkternes bevægelse i tiden. Med en smule held findes en fysisk teori, hvor Jonesrepræsentationerne beskriver denne tidsudvikling for en eller anden type partikler, svarende til punkterne, eller rettere de diagrammer, der forbinder punkterne, og som vi kiggede på tidligere. Om der findes en sådan fysisk teori er ikke helt klart på nuværende tidspunkt, men hvis den findes, er den modelleret af den matematisk-fysiske Chern-Simons-teori; en såkaldt \(2+1\)-dimensional topologisk kvantefeltteori. At teorien er 3-dimensional vil sige, at teorien beskriver en udvikling af 2-dimensionalt rum i 1-dimensional tid. At den er topologisk vil sige, at det system, den beskriver, i det store hele er indifferent med tilstrækkeligt kontinuerte deformationer: Husk at vi havde frihed til at flytte vores fletninger rundt i rummet, så længe strengene ikke bevægede sig igennem hinanden. At det er en kvantefeltteori ... well, der findes faktisk ikke én endelig definition på, hvad en kvantefeltteori er endnu ... Denne sammenhæng mellem fletninger og matematisk fysik, der går via Jonesrepræsentationen, blev opdaget af Edward Witten, der ligesom Jones har modtaget en Fieldsmedalje for sit arbejde.

Partiklerne, det vil sige diagrammerne, kaldes på engelsk any-ons, fordi de ikke opfører sig som de fermioner og bosoner, som man måske er bekendt med fra sin grunduddannelse i fysik, men at de kan opfører sig som hvad som helst (any-thing) midt imellem.

At realisere Jonesrepræsentationerne i virkeligheden er altså et problem om at finde et fysisk system, der er modelleret ved Chern-Simons-teori. Det kan lyde som en eller anden mellemting mellem ønsketænkning og nonsens men er faktisk ikke så langt ude, som man skulle tro. Hvis vi i det forrige indlæg havde betragtet diagrammerne med \(d = n\) ville vi have fået et halvkedeligt et-dimensionalt vektorrum \(V^{n,n}\), hvor Jonesrepræsentationen af en elementær fletning \(\sigma_i\) er givet ved \(1 \times 1\)-matricen \(\eta(\sigma_i) = (A)\). For denne værdi af \(d\) viser det sig, at de tilhørende anyoner rent faktisk findes i naturen, når også \(A\) har en bestemt værdi; de optræder blandt andet i hvad, der kaldes den rationale kvante-Hall-effekt, der blev opdaget i 1980'erne gennem arbejde, der i 1998 blev belønnet med en Nobelpris.

For andre værdier af \(d\) er der imidlertid endnu ingen, der har haft held med at finde tilhørende fysiske systemer -- partiklerne kaldes her "ikke-abelske" anyoner -- men faststoffysikere har efter sigende en god idé om, hvor de skal kigge.



Topologiske kvantecomputere


Hvis disse ikke-abelske anyoner en dag måtte vise sig i naturen, har det potentielt betydning for udviklingen af kvantecomputere. Kvanteberegning er lettest at forstå, hvis man sammenligner den med, hvordan almindelige computere fungerer: En almindelig computer består i bund og grund af implementeringer af en række logiske kredsløb, der forvandler samlinger af 0-taller og 1-taller til andre samlinger af 0-taller og 1-taller. I en kvantecomputer bliver de to tal 0 og 1 erstattet med (de uendeligt mange) vektorer i et 2-dimensionalt komplekst vektorrum og kredsløbene, der opererer på tallene, bliver erstattet med unitære matricer, der opererer på vektorerne.

Vi er derfor godt kørende, hvis vi er i stand til at finde fysiske (kvantemekaniske) systemer, modelleret i passende forstand af 2-dimensionale vektorrum, hvis dynamik omvendt giver anledning til de ønskede unitære operatorer. Men vi er jo allerede stødt på et sådant to-dimensionalt vektorrum: \(V^{4,0}\).

Men det er endnu bedre end det. En kvantealgoritme er givet ved en samling unitære matricer, så det er selvfølgelig optimalt, hvis ens fysiske system kan bruges til at lave alle de relevante unitære matricer, og det kan vi effektivt med Jonesrepræsentationerne: Ved efter behov at vælge en tilstrækkeligt stor fletning, kan vi komme vilkårligt tæt på enhver ønsket unitær matrix. I hvert fald hvis \(A\) vælges fra en bestemt familie af komplekse tal.



AMU-formodningen


Lad os nu vende tilbage til matematikken, til ting jeg rent faktisk ved noget om, og til de ting som artiklen med Egsgaard handler om.

Kort sagt har vi i artiklen givet en meget konkret fortolkning af, hvordan Jonesrepræsentationerne ser ud, hvis man sætter \(A = \exp(\pi i/4)\), og det er det, størstedelen af artiklen handler om. Denne konkrete værdi er speciel, fordi der her gælder, at udtrykket \(-A^2 -A^{-2}\), som vi stødte på i det første indlæg, forsvinder. Motivationen var forsøget på at sige noget klogt om AMU-formodningen (efter Andersen, Masbaum og Ueno), der i bund og grund siger, at man kan sige noget konkret om matricerne fra Jonesrepræsentationen, hvis man ved noget konkret om fletningernes dynamik. For at være en smule mere præcis, tillader jeg mig at stjæle en idé fra fluidmekanikere:

Forestil dig, kære læser, en flad skål med et lag væske, hvori \(n\) pinde er nedsænket, og at pindene flytter sig rundt for at blande væsken. Hvis pindene vender tilbage til deres oprindelige position, vil deres bevægelse i tid give anledning til en fletning: Som før tænker vi på pindenes placeringer som punkter i planen, og indfører en ny koordinat, der beskriver tiden; positionerne og tiden beskriver sammen en fletning i 3-dimensionalt rum. Hvis man nu derudover farver væsken, vil man kunne beskrive fletningen ved at studere, hvordan væsken er farvet efter nogle iterationer af blandingen.

For bestemte fletninger, som vi kalder pseudo-Anosov, vil resultatet forekomme kaotisk: Farverne vil optræde overalt i væsken, og går man en tur i væsken vil man møde farven et antal gange, der vokser eksponentielt i antallet af iterationer. På de følgende billeder har vi vist en "farvet" (blå) kurve i en sådan skål, samt resultatet af at blande den langs fletningen \(\sigma_1 \sigma_2^{-1}\) et antal gange. Her er der altså 3 blandende pinde, hvis start- og slutplaceringer er de røde punkter. Lad os sige, at skålen før vores lille eksperiment ser således ud:



Vi følger nu de tre pindes bevægelse langs fletningen \(\sigma_1 \sigma_2^{-1}\) (se filmen nedenfor), hvilket nødvendigvis vil tvinge den blå kurve rundt i skålen.



Efter en enkelt omgang blanding, vil den resulterende blå kurve ligne noget i retning af det nedenstående:



Nu kan vi selvfølgelig fortsætte, og pointen er nu, at efterhånden som vi gentager processen, da vil antallet af blå linjer, der ligger i nærheden af hinanden, vokse eksponentielt. Det ville ikke være sket med en hvilken som helst fletning, men det sker altså for \(\sigma_1 \sigma_2^{-1}\), som derfor er et eksempel på en pseudo-Anosov fletning. Nedenfor ser vi resultatet af at køre processen 2, 3 og 4 gange:





En version af AMU-formodningen siger nu, at hvis man starter med en pseudo-Anosov fletning, da vil de matricer, der kommer ud af Jonesrepræsentationen opføre sig på en helt bestemt måde: Hvis \(\sigma\) er en pseudo-Anosov fletning med \(n\) strenge, så findes der et \(d\) og et naturligt tal \(k_0\), sådan at hvis \(k > k_0\), så er matrixpotensen \(\eta(\sigma)^m\) aldrig identiteten for noget \(m\), hvor her \(A = \exp(\pi i/(4k))\). (På matematisk kan det siges en smule kortere: \(\eta(\sigma)\) har uendelig orden for disse \(k\).)

I artiklen med Egsgaard beviser vi denne formodning for en uendelig samling specielle fletninger; detaljerne kan man selvfølgelig finde i artiklen.

Diagrammerne, figurerne og symbolerne i disse to indlæg er produceret med LaTeX-pakken TikZ, med Mathjax, med sage-pakken braid, med Python-biblioteket matplotlib, med Matlab-pakken braidlab og med POV-Ray.


Se kommentarer (0)

Tags: matematik topologi knudeteori

30/7/2015, 19:04

Fletninger og Jonesrepræsentationer

Dette er det første af to indlæg, hvis mål er at give en introduktion til Jens Kristian Egsgaards og min artikel om de såkaldte Jonesrepræsentationer, der er på et så lavt niveau, at den kan forstås af alle, der ved lidt om komplekse vektorrum; det vil sige alle, der har haft noget, der svarer til det kursus i lineær algebra, som matematikstuderende har på deres første år.

Jonesrepræsentationer giver i bund og grund en metode til at lave en "fletning" om til en matrix. I bedste fald modellerer disse matricer fletningerne fuldstændigt, således at man kan studere fletninger (hvilket som udgangspunkt er svært) ved at studere matricer (hvilket til gengæld er let). I dette første indlæg definerer vi fletninger og deres Jonesrepræsentationer. I det næste kigger vi nærmere på, hvad de betyder, hvor de kommer fra, hvad de kan bruges til, og hvordan de måske vil revolutionere verden og alt det der.



Fletninger


Så hvad mener jeg, når jeg skriver fletning? En fletning er en samling af et antal strenge, der starter i en samling givne punkter og bevæger sig opad, mens de snor sig rundt om hinanden for til sidst at ende i den samme samling af punkter igen, nu blot højere oppe – vi kræver dog ikke, at en streng ender i det punkt, der ligger over det punkt, som den startede i. Hvis man har lyst til at tænke på fletninger som "virkelige" objekter, kan det være værd at tænke på en fletning som en beskrivelse af, hvordan en samling partikler i planen bevæger sig i tiden, idet retningen "opad" betragtes som tidsudvikling. Derudover kan man også bare vælge at tænke på en fletning som en fletning af hår, eller hvad man nu ellers har lyst til at flette. De følgende billeder viser eksempler på fletninger bestående af fire strenge.



Vi vælger at betragte to fletninger som ens, hvis man kan flytte den ene over i den anden uden at flytte strenge gennem hinanden. Det betyder f.eks., at de følgende to trestrengede fletninger er ens:



Det eneste krav vi stiller til fletningerne er, at de altid bevæger sig opad; det betyder til gengæld, at enhver fletning med \(n\) strenge kan beskrives på følgende simple vis: Først definerer vi for hvert \(i = 1, \dots, n-1\) en fletning \(\sigma_i\) ved at lade streng nummer \(i\) krydse over streng nummer \(i+1\). De nedenstående tre billeder viser henholdsvis \(\sigma_1\), \(\sigma_2\) og \(\sigma_3\).







På samme måde definerer vi en fletning \(\sigma_i^{-1}\) ved at lade streng nummer \(i+1\) krydse over streng nummer \(i\). Vi kan nu beskrive en hvilken som helst fletning ved at vælge en samling af \(\sigma_i^{\pm 1}\)'er og stable dem ovenpå hinanden. F.eks. kan følgende fletning beskrives ved 'ordet' \(\sigma_2 \sigma_1 \sigma_3^{-1}\) (læs billedet nedefra og op):




Diagramvektorrum


Vores mål er som sagt at lave fletninger om til matricer. Det gør vi ved først at beskrive en basis for et vektorrum og derefter beskrive, hvad fletningerne skal gøre ved basiselementerne. Vores basiselementer vil blive givet ved en type abstrakte diagrammer.

Tag igen et naturligt tal \(n\) og vælg et tal \(d \in \{0,\dots,n-1\}\) (hvor \(d\) står for dræn), således at \(d\) og \(n\) enten begge er lige eller begge er ulige. Betragt nu et to-dimensionalt kvadrat med \(n\) punkter valgt på toppen og \(d\) på bunden. Et basisdiagram er nu pr. definition et diagram i kvadratet, der forbinder hvert af de \(n+d\) punkter med et andet af punkterne, således at diagrammet ikke har nogen selvgennemskæringer, og således at et punkt fra bunden altid er forbundet til et punkt fra toppen. Her er de to mulige diagrammer for \(n = 4\), \(d = 0\):



For \(n = 4\), \(d = 2\) er der 3 basisvektorer, \(v_1\), \(v_2\) og \(v_3\):







For hvert par \((n,d)\) definerer vi nu et vektorrum \(V^{n,d}\) til at være udspændt af alle diagrammer hørende til parret \((n,d)\). Det vil f.eks. sige, at \(V^{4,0}\) er udspændt af to diagrammer, mens \(V^{4,2}\) er udspændt af tre diagrammer. Med andre ord har vektorrummene dimensioner \(\mathrm{dim} V^{4,0} = 2\) og \(\mathrm{dim} V^{4,2} = 3\). Lidt mere generelt kan man vise, at dimensionen af \(V^{2n,0}\) er givet ved en forskel mellem binomialkoefficienter, \[\dim V^{2n,0} = \binom{2n-1}{n} - \binom{2n-1}{n-2}.\] Dette tal kaldes også det \(n\)'te Catalantal, og for generelle \((n,d)\) gælder en lignende formel.



Jonesrepræsentationer


Vi er nu i stand til at knytte en matrix \(\eta(\sigma)\) til enhver fletning \(\sigma\). Fasthold et naturligt tal \(n\) – antallet af strenge – og vælg et eller andet \(d\) som ovenfor, så vi har et vektorrum \(V^{n,d}\). Tag nu en vilkårlig fletning \(\sigma\). Vi er færdige med vores konstruktion, hvis vi kan definere, for hvert eneste basisdiagram \(v\), en linearkombination \(\eta(\sigma)(v)\) af basisdiagrammer. Her er \(\eta(\sigma)\) den matrix, vi er på jagt efter. Den eksempelforetrækkende læser kan med fordel scrolle lidt ned, idet vi slutter af med et eksempel.

Matricen opstår som følger: Tag diagrammet \(v\) og sæt fletningen \(\sigma\) ovenpå; kald resultatet \(\sigma . v\). Resultatet er ikke et diagram, men det kan vi tvinge det til at blive: Tag et hvilket som helst (komplekst) tal \(A \not= 0\) og fjern alle kryds i \(\sigma . v\) ved at bruge følgende regel til at lave en linearkombination af de to forskellige måder at skabe diagrammer uden selvgennemskæringer:



På denne måde kan vi fjerne alle krydsninger, men der er nu to ting, der kan gå galt: Vi kan risikere at ende med at få to punkter i bunden forbundet, hvilket vi ikke tillod ovenfor, og vi kan risikere at ende med at få en cirkel, der ikke forbinder noget som helst. I det første tilfælde, hvor to punkter i bunden bliver forbundet, løser vi problemet ved at kalde resultatet \(0\); vi fjerner det altså helt fra udregningen. I det andet tilfælde, hvor vi ender med en cirkel, vælger vi at fjerne cirklen og at gange resultatet med tallet \(-A^2 - A^{-2}\).

På nuværende tidspunkt er det nok på plads med et par eksempler på den abstrakte beskrivelse ovenfor. Lad os se på tilfældet \(n = 4\), \(d = 2\). Vi har så de tre forskellige basisdiagrammer \(v_1\), \(v_2\) og \(v_3\), som vi fandt tidligere. Lad os prøve at finde ud af, hvad \(\eta(\sigma_1)\) er, hvor \(\sigma_1\) er den elementære fletning, hvor den første streng krydser over den anden streng. Det vil sige, at \(\sigma_1 . v_1\) ser sådan her ud:



Vi bruger nu vores regel til at fjerne krydset og får, at



I resultatet har vi altså fået noget, der ligner vores oprindelige diagram tilbage, bortset fra at vi nu har en ekstra cirkel i den ene summand, og ifølge ovenstående beskrivelse skal vi fjerne cirklen og gange med \(-A^2 - A^{-2}\). På bundlinjen får vi altså, at



Skrevet med symboler har vi nu fundet, at \[\eta(\sigma_1)(v_1) = (A+A^{-1}(-A^2-A^{-2}))v_1 = -A^{-3} v_1.\] Vi kan lave den samme gymnastik for \(v_2\) og \(v_3\) og her vil man finde, at \(\eta(\sigma_1)(v_2) = A^{-1} v_1 + A v_2\), og at \(\eta(\sigma_1)(v_3) = A v_3\). Sætter man det hele sammen, har vi udregnet, hvad \(\eta(\sigma_1)\) gør ved vektorrummets tre basisvektorer \((v_1,v_2,v_3)\). Med andre ord er \(\eta(\sigma_1)\) i denne basis givet ved


\[\eta(\sigma_1) = \begin{pmatrix} -A^{-3} & A^{-1} & 0 \\ 0 & A & 0 \\ 0 & 0 & A\end{pmatrix}.\]

Idet hele udregningen er så algoritmisk, bør det ikke være den store overraskelse, at det er let at lokke en computer til at udføre den i stedet, og dette værktøj gør præcis det.



Et åbent spørgsmål


Nu hvor vi har brugt lidt tid på at definere matricerne \(\eta(\sigma)\), er det på sin plads at nævne, at vi faktisk ikke har vanvittigt godt styr på dem, til trods for at de er så relativt lette at definere. Et naturligt spørgsmål er, om vi har mistet information ved at kigge på matricerne i stedet for fletningerne. Det er netop spørgsmålet om, hvorvidt samlingen af \(\eta\)'er for forskellige \(d\) giver en injektiv afbildning eller ej. Dette kan til gengæld formuleres som følger: "Fasthold et \(n\). Givet et \(\sigma\) sådan at der for alle \(d\) gælder, at \(\eta(\sigma) = \mathrm{Id}\), hvor \(\mathrm{Id}\) er identitetsmatricen, er det så sandt, at \(\sigma\) selv er den trivielle fletning, hvor alle strengene er lodrette?" Dette viser sig at være sandt, hvis \(n = 2\) og \(n = 3\), men for alle større værdier af \(n\) aner vi ikke, hvad der foregår. Selv det umiddelbart simple tilfælde \(n = 4\) (som sikkert ikke er spor simpelt) kunne det være fedt at få afklaret.



Et par historiske bemærkninger


Samlingen for alle \(d\) af afbildningerne \(\eta\), der tager en fletning og giver en matrix er hvad, der kendes som Jonesrepræsentationen. Jonesrepræsentationerne er opkaldt efter Vaughan Jones, der studerede dem og deres egenskaber i slutningen af 80'erne. Det var blandt andet for dette arbejde, at han i 1990 blev tildelt Fieldsmedaljen; den mest prestigefyldte matematikpris.

I det specielle tilfælde, hvor \(d = n - 2\) (hvilket f.eks. er det, vi kiggede på i eksemplet ovenfor), kaldes tilknytningen af matricer til fletninger for Buraurepræsentationen, efter Werner Burau der studerede dem i 1930'erne. Matematikere, der er stødt på Buraurepræsentationen før, vil nok kende dem som repræsentationen af fletninger på hvad der kaldes homologien af det uendelige parkeringshus (se konstruktionen på animationen til højre). Hvis man i dette hus ganger en homologicykel med faktoren \(A^{\pm 4}\), svarer det til at flytte cyklen op og ned i huset, hvilket til dels kan forklare, hvor dette lidt mystiske komplekse tal kommer ind i billedet. Hvad betydningen af \(A\) er, ser vi også nærmere på i næste indlæg, der nu er at finde her.


Se kommentarer (0)

Tags: matematik topologi knudeteori

29/7/2015, 18:01

Sjov med deepdream

I slutningen af juni måned offentliggjorde Google Pythonkildekoden til deepdream: Et stykke programmel, der tillader visualisering af en samling kunstige neutrale netværks anvendelsesmuligheder inden for billedgenkendelse. Jeg kan ikke påstå, at jeg har sat mig ind i de tekniske detaljer, men Google har produceret et blogindlæg, der i grove træk forklarer, hvad der foregår, og hvad programmet kan. Lad mig ikke gøre et forsøg på at gengive det, da jeg alligevel ikke vil kunne gøre det bedre, end de selv gør.

I bund og grund er det overordnede mål at genkende givne objekter i vilkårlige billeder. Med deepdream kan man da få indsigt i, hvad de anvendte algoritmer egentlig finder, idet fundene forstærkes i de oprindelige billeder. Dermed kan man, som mig og en hel masse andre mennesker, bare fyre op under koden og bruge det til at skabe meget fjollet kunst.



Billeder


Det nedenstående er resultatet af at køre et billede af Svartifoss gennem GoogLeNet-netværket; Googles bidrag til en billedgenkendelseskonkurrence, der løb af stablen sidste år. Tryk på billedet for at få en større version. (Do it!)



En af mine egne favoritter er nedenstående resultat af at køre et bål igennem et varierende antal gange:



En anden mulighed, der også er inkluderet i ovennævnte frit tilgængelige eksempel, er at iterere genkendelsesprocessen, mens man zoomer ind på et givet område i billedet. I min forfængelighed lod jeg deepdream tjekke indholdet af et af mine øjenbryn:



Opsætning


Hvis man selv har lyst til at rode med deepdream, er det ikke svært at finde opsætningsguides. Selv fandt jeg denne Debianguide anvendelig; eneste bump var for mit vedkommende, at Caffe tilsyneladende ikke er tilfreds med g++ 4.9.

Bemærk at det kræver et NVIDIA-kort at køre Caffe på ens GPU.


Se kommentarer (0)

Tags: deepdream pythonDette indlæg findes også på engelsk.

23/6/2015, 12:56

Grundlæggende topologi: Noterne

Jeg har for nyligt afsluttet et 40-timers-kursus i "Grundlæggende topologi". Kurset dækkede fundamentale begreber om topologiske og metriske rum, herunder egenskaber såsom sammenhængenhed, kompakthed, og separering. Hen mod slutningen var vi i stand til at tale om elementær algebraisk topologi og eksplicit udregne fundamentalgrupperne af simple topologiske rum.

Hvis du er nysgerrig omkring, hvordan man bruger 40 timer på det, eller hvis du er nysgerrig omkring, hvad i alverden der foregik i ovenstående afsnit af dette indlæg, så tjek de 93 siders kursusnoter, der opstod i løbet af kurset.


Se kommentarer (0)

Tags: matematik topologiDette indlæg findes også på engelsk.

21/6/2015, 19:50

Agar med vennerne

I dette indlæg beskrives, hvordan man påbegynder en session i det populære onlinespil agar.io med vennerne. Bemærk at indlægget formentlig bliver uddateret temmelig hurtigt, da spillet stadig er under udvikling.




Baggrund


Agar.io er et vanedannende JavaScript-baseret spil, hvori man kontrollerer en cirkelskive, der spiser cirkelskiver, der er mindre end sig selv. Og som bliver spist af cirkelskiver, der er større end sig selv, hvis man ikke er forsigtig. Alle spiller det. Det er sjovt.

Som alle andre onlinespil er spillet klart sjovest, når man spiller det med nogen, man kender. Indtil i går kunne man gøre det ved at manipulere JavaScriptet og forbinde til det samme spil. Dette endte imidlertid med at ødelægge nogle spil, da folk uden venner ville blive kørt over, og derfor blev der lukket for muligheden for at spille sammen.

Som det så ofte sker, fandt folk hurtigt ud af, hvordan man undgår den nye begrænsning, og det er muligt at finde huller online. Det eneste offentliggjorte hul, jeg har set, er i Chromes Webshop, hvor man ved at betale penge kan få muligheden for at spille sammen tilbage. Nu er det imidlertid temmelig dårlig stil at tjene penge på andres arbejde på den måde, så nedenfor følger en beskrivelse af, hvordan man kan opnå det samme resultat som dette plugin.



Lappen


Vid at alt der følger kan deduceres direkte fra den mildt opfuskerede klientkildekode. Jeg har ingen anelse om, hvad serverne gør.

I bund og grund foregår serverforbindelser i spillet som følger: Klienten sender en forespørgsmål til m.agar.io for at få en IP på en server i en given del af verden. Siden besvarer med en IP og en engangskode til at forbinde til serveren på den IP.

Nu er der imidlertid ikke så mange servere derude, så ved blot at gentage denne anmodning vil man før eller siden få mere end én engangskode til samme server. Disse kan så deles med ens venner. Proceduren nedenfor beskriver, hvordan man i praksis kan gøre det for 2–3 personer. Det ville være ligetil at implementere et plugin, der tillader et vilkårligt antal mennesker at bruge samme server, men det har jeg ingen intention om at gøre.



Hvordan det virker i praksis


Skridt 1. Åbn http://agar.io – HTTPS-versionen af siden virker også men lader til at have et par fejl.

Skridt 2. Åbn din browsers udviklerkonsol (højreklik → 'inspect element' → 'console' i Firefox/Chrome). Indsæt nedenstående stykke JavaScript:


function getServer() {
jQuery.ajax("http://m.agar.io/", {
success: function(a) {
a = a.split("\n");
console.log("connect(\"ws://" + a[0] + "\", \"" + a[1] + "\")")
},
dataType: "text",
method: "POST",
data: "EU-London"
})
}

for (i=0;i<20;i++) {
getServer();
}


Skridt 3. Det ovenstående producerer en liste over servere, som du nu kan forbinde til. For at forbinde til en bestemt server, kopierer du en af linjerne og sætter den ind i konsollen igen. Nu finder du blot en adresse på formen IP:port, som går igen, og deler de tilhørende linjer med dine venner. Husk at hver linje kun kan bruges en enkelt gang.

Skridt 4. Gentag! Af en eller anden grund (min hypotese er, at serverne har en tendens til at blive fyldt op) virker det her ikke altid første gang, og folk ender i stedet på forskellige servere. Det er dog min erfaring, at det vil virke efter nogle enkelte forsøg.


Se kommentarer (0)

Tags: agar gaming javascriptDette indlæg findes også på engelsk.