Ser man på mat bara utifrån näringsvärdena finns det många beräkningar man kan göra. En är att räkna medelvärdena för alla näringsvärden. Då får man en punkt som är medelvärdet för alla livsmedel.
Nästa steg kan vara att ordna alla livsmedel efter avståndet från den punkten. Det kan man göra med alla näringsvärden, eller bara vissa. Beroende på vilka näringsvärden man har med kan man få olika ordningar.
Men alla dimensioner är inte lika viktiga för att ge den information som behövs för att ordna livsmedlen.
Man kan pröva och ta bort en dimension och se om man fortfarande får samma ordning mellan livsmedlen. Om man får samma ordning kan man pröva att ta bort en dimension till och så vidare.
Det här är ett programmeringsproblem som lämpar sig väldigt bra att lösas rekursivt eftersom man kör programmet på mer och mer reducerade versioner av indata.
Om man kör programmet på alla möjliga dimensioner och alla livsmedel i databasen så får man en lång och komplicerad körning, för det visar sig vara sju dimensioner som inte bara går att ta bort i första omgången, utan där dessutom alla sju går att ta bort samtidigt utan att ordningen mellan livsmedlen förändras.
De sju är
[22 'Fettsyra_20_0_g' 'REAL' 0 None 0]
[24 'Fettsyra_16_1_g' 'REAL' 0 None 0]
[29 'Fettsyra_20_4_g' 'REAL' 0 None 0]
[30 'EPA_Fettsyra_20_5_g' 'REAL' 0 None 0]
[31 'DPA_Fettsyra_22_5_g' 'REAL' 0 None 0]
[41 'Riboflavin_mg' 'REAL' 0 None 0]
[45 'Vitamin_B6_mg' 'REAL' 0 None 0]
Att de går att ta bort samtidigt innebär lite problem för hur programmet körs. Programmet förväntar sig att man inte nödvändigtvis kan ta bort alla dimensioner i alla ordningar, så det prövar alla. Alla möjliga permutationer av sju dimensioner är 7! (7-fakultet), dvs 5 040 körningar bara för att pröva ordningen...
Men eftersom de går att ta bort allihop i én ordning så är det troligt att de går att ta bort i vilken ordning som helst. Antagligen har de här dimensionerna väldigt lite prediktiv kraft för matrymden av livsmedel.
Här finns koden som Jupyter om någon vill prova.
/Simon
Comments