Staram się symulować windę, jak zawsze zacząłem bardzo prosto, biorąc tylko jedno zamówienie na raz, a następnie dodałem pamięć do windy w postaci kolejek, aby piętra były przemieszczane w kolejności, w której zostały wciśnięte, co oczywiście nie jest najlepszym podejściem.
Więc w tej chwili używam bardzo prostej i „krótkowzrocznej” logiki, która polega na tym, że dla bieżącej podłogi znajdź podłogę najbliżej mnie i ustaw ją jako mój następny cel i zapętlaj ją, dopóki na liście nie będzie już więcej pięter.
Ale to nie zawsze działa, na przykład winda znajdowała się na 3 piętrze pięciopiętrowego budynku i otrzymała zamówienia 4,5,2, najkrótsza ścieżka to 2-> 4-> 5, która kosztuje 4 piętra, ale przy użyciu tej logiki 4-> 5-> 2, która kosztuje 5, ma taką samą szansę na wybranie, w zależności od kodu.
Jak znaleźć najkrótszą ścieżkę i zwiększyć wydajność windy?