Sto cercando un algoritmo per trovare la migliore combinazione di dimensioni per ottenere il risultato desiderato.Algoritmo per trovare la migliore combinazione di dimensioni
Prendere seguente come esempio:
| A | B | C | y |
|--------|--------|-------|-----|
| dog | house1 | green | 30 |
| dog | house1 | blue | 15 |
| cat | house1 | green | 20 |
| cat | house2 | red | 5 |
| turtle | house3 | green | 50 |
A, B, C sono le dimensioni misurate. y è il risultato misurato.
Se voglio ottenere tutte le combinazioni di dimensioni che svolgono y> = 50 in modo che i risultati saranno:
turtle, house3, green
turtle, any, green
turtle, house3, any
turtle, any, any
any, house3, green
any, house3, any
any, any, green
any, house1, green
any, house1, any
Forse è un problema facile, ma ho cercato di capire una soluzione ottimale in termini di O (n) e non l'ho trovato.
Quasi certamente legato alla [Programmazione Lineare] (https://en.wikipedia.org/wiki/Linear_programming). Le soluzioni saranno parti di (forse "slice through"?) Il simplex. In attesa di vedere approcci per questo. BTW: ** lineare ** riferito al numero di righe della tabella? Questo potrebbe essere difficile. Il mio istinto è che sarà almeno O (n * m), per le colonne 'n' e 'm', ed è probabile che sia ancora più costoso ... – Marco13
Puoi spiegare le uscite? In che senso è "any, house1, any' a solution? Aggiungete i corrispondenti valori 'y', ottenendo' 30 + 15 + 20 = 65' in questo caso? (Forse più background sarebbe utile: che tipo di quantità "y" rappresenta, e perché ha senso riassumere elementi della colonna 'y'?) –
@MarkDickinson hai ragione, somma (y) quando A = any, B = house1, C = any – decay