Gå til innhold

Matte i media og forskning.


rlz

Anbefalte innlegg

Videoannonse
Annonse

Hei! Jeg har et sorteringsproblem med noe randomness som jeg lurer på om det finnes en god algoritme eller noe grei software til å gjøre:

 

Vi er en gruppe lærere med 90 elever. Vi skal på leirskole og elevene skal bo på rom med fire senger. Hver elev har satt opp tre ønsker til hvem de vil bo med.

 

Er dette en type problem det kan lages en optimeringsalgoritme til? Det er alltid mas og kjas mellom huene som skal samarbeide om dette, og det hadde vært fantastisk om en enkel behandling av inndata hadde gitt det mest "rettferdige" resultatet, med de tilfeldige valgene som måtte vært lagt inn.

 

Hva tror dere?

Lenke til kommentar

Hei! Jeg har et sorteringsproblem med noe randomness som jeg lurer på om det finnes en god algoritme eller noe grei software til å gjøre:

 

Vi er en gruppe lærere med 90 elever. Vi skal på leirskole og elevene skal bo på rom med fire senger. Hver elev har satt opp tre ønsker til hvem de vil bo med.

 

Er dette en type problem det kan lages en optimeringsalgoritme til? Det er alltid mas og kjas mellom huene som skal samarbeide om dette, og det hadde vært fantastisk om en enkel behandling av inndata hadde gitt det mest "rettferdige" resultatet, med de tilfeldige valgene som måtte vært lagt inn.

 

Hva tror dere?

Kommer ikke på en passende algoritme fra algdat-timene, da mange av disse problemene slett ikke har noen løsning.

 

Hva med dette:

Sorter folks førstevalg i et sett, folks andrevalg i et sett, og så videre.

Innvilg valgene til de som har hverandre på lista først, uavhengig av hvilken plass på lista dette har for de enkelte.

Innvilg så førstevalget til folk villkårlig så langt det lar seg gjøre. Slett resten av preferansene; de er umulige.

Innvilg så andrevalget til folk så godt det lar seg gjøre, og så videre.

 

Lager man et dataprogram av dette, kan man gjøre dette flere ganger, og hver gang regne ut forholdet mellom innvilgede preferanser og uinnvilgede. Iter over dette noen hundre/tusen ganger, og velg det utfallet der antallet innvilgede preferanser er høyest.

???

profit.

 

Kan sikkert gjøres langt mer elegant, men bruteforce-løsninger er som regel langt kjappere å sette i live, og absolutt gangbare så lenge antallet som iteres over ikke er mer enn noen tusen.

Lenke til kommentar

Hei! Jeg har et sorteringsproblem med noe randomness som jeg lurer på om det finnes en god algoritme eller noe grei software til å gjøre:

 

Vi er en gruppe lærere med 90 elever. Vi skal på leirskole og elevene skal bo på rom med fire senger. Hver elev har satt opp tre ønsker til hvem de vil bo med.

 

Er dette en type problem det kan lages en optimeringsalgoritme til? Det er alltid mas og kjas mellom huene som skal samarbeide om dette, og det hadde vært fantastisk om en enkel behandling av inndata hadde gitt det mest "rettferdige" resultatet, med de tilfeldige valgene som måtte vært lagt inn.

 

Hva tror dere?

Kommer ikke på en passende algoritme fra algdat-timene, da mange av disse problemene slett ikke har noen løsning.

 

Hva med dette:

Sorter folks førstevalg i et sett, folks andrevalg i et sett, og så videre.

Innvilg valgene til de som har hverandre på lista først, uavhengig av hvilken plass på lista dette har for de enkelte.

Innvilg så førstevalget til folk villkårlig så langt det lar seg gjøre. Slett resten av preferansene; de er umulige.

Innvilg så andrevalget til folk så godt det lar seg gjøre, og så videre.

 

Lager man et dataprogram av dette, kan man gjøre dette flere ganger, og hver gang regne ut forholdet mellom innvilgede preferanser og uinnvilgede. Iter over dette noen hundre/tusen ganger, og velg det utfallet der antallet innvilgede preferanser er høyest.

???

profit.

 

Kan sikkert gjøres langt mer elegant, men bruteforce-løsninger er som regel langt kjappere å sette i live, og absolutt gangbare så lenge antallet som iteres over ikke er mer enn noen tusen.

 

http://en.wikipedia.org/wiki/Edmonds's_matching_algorithm

 

EDIT: ser at jeg kanskje var litt for raskt ute der... tror faktisk ikke det er fullt så enkelt.

 

Idé 1: la det være en kant (u, v) i en graf hvis u vil være på rom med v. finn et par noder x, y slik at kantene (x, y) og (y, x) finnes (begge vil være på rom med hverandre). slå disse sammen til en ny node X og lag kanten (X, z) hvis (u, z) og (v, z) finnes, og tilsvarende en kant (z, X) hvis (z,u) og (z,v) finnes. fortsett slik til du har grupperinger på 4. ta da disse ut fra grafen fullstendig og begynn på nytt. Dette burde gi en grei approksimasjon som utgangspunkt hvertfall.

 

Idé 2: Bruk en SCC-algoritme iterativt. I hver iterasjon, finn en enkelt SCC med maksimal kardinalitet. er den > 4, splitt den opp. hvis du får en rest på < 4, legg de tilbake i grafen. start en ny iterasjon. hvis det ikke lenger finnes en SCC med kardinalitet >= 4, slå sammen mindre komponenter slik at hvertfall alle har noen de ville være på rom med.

Endret av hockey500
Lenke til kommentar

Fant denne på en statistikkeksamen (dog, "bruk uten bevis")

 

chart?cht=tx&chl=\left{X_i\right}_{i=1}^n er identisk fordelte og uavhengige (kontinuerlige) variable, med chart?cht=tx&chl=f(x)=2\alpha x e^{-\alpha x^2} (chart?cht=tx&chl=x\geq0). Vis at chart?cht=tx&chl=E\left(\frac{1}{\sum_{i=1}^n X_i^2}\right)=\frac{\alpha}{n-1}.

 

Ikke så veldig vanskelig, men det postes så lite her.

Endret av Frexxia
Lenke til kommentar

Hei! Jeg har et sorteringsproblem med noe randomness som jeg lurer på om det finnes en god algoritme eller noe grei software til å gjøre:

 

Vi er en gruppe lærere med 90 elever. Vi skal på leirskole og elevene skal bo på rom med fire senger. Hver elev har satt opp tre ønsker til hvem de vil bo med.

 

Er dette en type problem det kan lages en optimeringsalgoritme til? Det er alltid mas og kjas mellom huene som skal samarbeide om dette, og det hadde vært fantastisk om en enkel behandling av inndata hadde gitt det mest "rettferdige" resultatet, med de tilfeldige valgene som måtte vært lagt inn.

 

Hva tror dere?

Du må definere hva som er det "rettferdige" valget før jeg kan hjelpe deg i detalj.

 

Den enkleste framgangsmåten jeg ser for meg er å tilegne hver person eller hvert rom en verdi basert på hvor mange av ønskene som er oppfylt. Deretter summerer du disse for alle mulige valg (brute force) og velger kombinasjonen med størst verdi.

 

Grunnen til at jeg sier du må definere hva som er "rettferdig" er fordi det kan tenkes at kombinasjonen med størst verdi gjør at nesten alle får førstevalget, mens 1-2 personer får ingen av ønskene, eller at alle rommene -1 er optimale mens et rom er satt sammen med ingen med samme ønsker. Dette er noe man kan justere med å endre verdiene på ønskene eller en smartere summering.

 

Dette kunne du enkelt ha skrevet i python eller java eller hva det måtte være.

Lenke til kommentar

http://en.wikipedia.org/wiki/Edmonds's_matching_algorithm

 

EDIT: ser at jeg kanskje var litt for raskt ute der... tror faktisk ikke det er fullt så enkelt.

 

Idé 1: la det være en kant (u, v) i en graf hvis u vil være på rom med v. finn et par noder x, y slik at kantene (x, y) og (y, x) finnes (begge vil være på rom med hverandre). slå disse sammen til en ny node X og lag kanten (X, z) hvis (u, z) og (v, z) finnes, og tilsvarende en kant (z, X) hvis (z,u) og (z,v) finnes. fortsett slik til du har grupperinger på 4. ta da disse ut fra grafen fullstendig og begynn på nytt. Dette burde gi en grei approksimasjon som utgangspunkt hvertfall.

 

Idé 2: Bruk en SCC-algoritme iterativt. I hver iterasjon, finn en enkelt SCC med maksimal kardinalitet. er den > 4, splitt den opp. hvis du får en rest på < 4, legg de tilbake i grafen. start en ny iterasjon. hvis det ikke lenger finnes en SCC med kardinalitet >= 4, slå sammen mindre komponenter slik at hvertfall alle har noen de ville være på rom med.

Vil dette fungere for separate grafer? Det kan jo tenkes at en mer optimal løsning hadde vært 2 grafer hvor man ikke kan nå alle nodene fra en gitt node.

Lenke til kommentar

vet ikke helt om jeg skjønner spørsmålet. Jeg antar da ikke at alle noder kan nås fra en gitt node.

 

Hvis man har flere subgrafer er det bare å kjøre algoritmen for hver subgraf. Denne algoritmen (både 1 og 2) vil nok ikke terminere med et perfekt resultat, så litt heuristikk må nok til på slutten for å plassere de som ikke allerede har blitt plassert av algoritmen.

 

EDIT: kom akkurat på at det kanskje kan være en idé å plassere alle klikker av en viss størrelse på rom før man leter etter SCC. (la til lenker for de som ikke har tatt algdat eller tilsvarende fag)

Endret av hockey500
Lenke til kommentar

Hei! Trenger hjelp med noe potensregning. Kan noen vise og forklare hvordan man regner ut disse?:

 

⠀⠀1⠀⠀^3

(⠀—⠀)⠀⠀⠀*⠀3^3⠀=

⠀⠀2

 

 

og

 

 

⠀2^5⠀⠀⠀⠀⠀5⠀⠀^3

⠀——⠀⠀*⠀( — )⠀⠀⠀=

⠀5^2⠀⠀⠀⠀⠀2

 

 

og

 

⠀⠀⠀⠀⠀⠀⠀x⠀⠀^4

3^5⠀*⠀( —⠀)⠀⠀⠀=

⠀⠀⠀⠀⠀⠀⠀3

Endret av Bendiko
Lenke til kommentar

Hei! Trenger hjelp med noe potensregning. Kan noen vise og forklare hvordan man regner ut disse?:

 

⠀⠀1⠀⠀^3

(⠀—⠀)⠀⠀⠀*⠀3^3⠀=

⠀⠀2

 

 

og

 

 

⠀2^5⠀⠀⠀⠀⠀5⠀⠀^3

⠀——⠀⠀*⠀( — )⠀⠀⠀=

⠀5^2⠀⠀⠀⠀⠀2

 

 

og

 

⠀⠀⠀⠀⠀⠀⠀x⠀⠀^4

3^5⠀*⠀( —⠀)⠀⠀⠀=

⠀⠀⠀⠀⠀⠀⠀3

 

Reglene for en brøk opphøyd er at du opphøyer både teller og nevner.

Når du skal gange et helt tall inn i en brøk ganger du det inn oppe.

 

Hvis du har en brøk ganget med en brøl er det teller ganger teller og nevner ganger nevner.

 

Hvis du har x4 som skal ganges med et vanlig tall, ( i dette tilfellet 35) Vil svaret bare være 35*x4

Og hvis du f.eks. har 54/52 så vil svaret være 54-2. Du trekker altså potensen i nevneren fra potensen i telleren, men bare hvis de har samme grunntall

Endret av Kam
Lenke til kommentar

Hei! Trenger hjelp med noe potensregning. Kan noen vise og forklare hvordan man regner ut disse?:

 

⠀⠀1⠀⠀^3

(⠀—⠀)⠀⠀⠀*⠀3^3⠀=

⠀⠀2

 

 

og

 

 

⠀2^5⠀⠀⠀⠀⠀5⠀⠀^3

⠀——⠀⠀*⠀( — )⠀⠀⠀=

⠀5^2⠀⠀⠀⠀⠀2

 

 

og

 

⠀⠀⠀⠀⠀⠀⠀x⠀⠀^4

3^5⠀*⠀( —⠀)⠀⠀⠀=

⠀⠀⠀⠀⠀⠀⠀3

 

Reglene for en brøk opphøyd er at du opphøyer både teller og nevner.

Når du skal gange et helt tall inn i en brøk ganger du det inn oppe.

 

Hvis du har en brøk ganget med en brøl er det teller ganger teller og nevner ganger nevner.

 

Hvis du har x4 som skal ganges med et vanlig tall, ( i dette tilfellet 35) Vil svaret bare være 35*x4

Og hvis du f.eks. har 54/52 så vil svaret være 54-2. Du trekker altså potensen i nevneren fra potensen i telleren, men bare hvis de har samme grunntall

 

Skjønner fortsatt ikke hvordan jeg skal regne ut stykkene

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...