informatiCup / informatiCup2022

Abfahrt! Der InformatiCup 2022
23 stars 3 forks source link

Timing of Depart/Detrain - Passing stations #20

Closed mo374z closed 2 years ago

mo374z commented 2 years ago

Dieses Thema wurde bereits in https://github.com/informatiCup/informatiCup2022/issues/16 behandelt ist dort allerdings geschlossen worden. Wir stellen uns jedoch auf Basis der letzten Antwort von @Top-Ranger die gleiche Frage wie jfreyberg

Wir würden uns sehr über eine Antwort freuen, die einen detaillierten, schrittweisen Ablauf darstellt. (Zeit: Position am Anfang des Schrittes, Position am Ende des Schrittes)

Als Basis kann dabei folgendes System verwendet werden:

S1---(L1/4)---S2---(L2/5)---S3---(L3/1)---S4

Der verwendete Zug hat dabei die folgenden Spezifikationen und transportiert P1:

T1 S1 2 50 P1 S1 S4 10 20

Der Pfad wäre nach unserem Verständnis:

  1. P1 Board T1 / T1 bei S1
  2. Depart L1 / T1 (0/4 auf L1) - T1 (2/4 auf L1)
  3. T1 (2/4 auf L1) - T1 (4/4 auf L1 und damit bei S2)
  4. Depart L2 / T1 (0/5 auf L2) - T1 (2/5 auf L2)
  5. T1 (2/5 auf L2) - T1 (4/5 auf L2)
  6. Depart L3 / T1 (4/5 auf L2) - T1 (1/1 auf L3 und damit bei S4, da S3 aufgrund von v(T1)=2 "übersprungen" wird
  7. P1 Detrain

Vor allem bei der Platzierung des "Depart" bei der "übersprungenen" Station S3 im Fahrplan sind wir uns noch sehr unsicher.

NickHillebrand commented 2 years ago

Diese Frage beschäftigt uns weiterhin intensivst, daher bitte ich Sie um eine kurze Rückmeldung bezüglich des Bearbeitungsstatus unserer Frage. Gerne können auch andere Teilnehmer sich unseres Problems annehmen. Wir sind wirklich verzweifelt!

Top-Ranger commented 2 years ago

Moin,

entschuldigt bitte, dass ich erst jetzt antworte. Da wir den Wettbewerb in unserer Freizeit gestalten und eure Frage prinzipiell bereits in https://github.com/informatiCup/informatiCup2022/issues/16 beantwortet wurde habe ich das Issue erstmal auf niedrigere Priorität gesetzt.

Bitte beachtet, dass wir nicht für jede mögliche Kombination eine genaue Herleitung machen können, da dies einfach unsere momentanen Ressourcen sprengen würde. Generell ist in den meisten Fällen das korrekt, das von dem Validator als korrekt ausgegeben wird.

In eurem Beispiel ließe sich das mit folgendem Minimalbeispiel testen:

input.txt:

[Stations]
S1 10
S2 10
S3 10
S4 10

[Lines]
L1 S1 S2 4 1
L2 S2 S3 5 1
L3 S3 S4 1 1

[Trains]
T1 S1 2 50

[Passengers]
P1 S1 S4 10 20

output.txt:

[Train:T1]
2 Depart L1
4 Depart L2
6 Depart L3

[Passenger:P1]
1 Board T1
7 Detrain

Der Validator gibt dann folgendes aus

> ./Bahn-Simulator -input ../../input.txt -output ../../output.txt
0

In dem Fall sieht man, dass der von euch vorgeschlagene Plan tatsächlich gültig ist. Sie ließe sich sogar veringern zu:

output.txt:

[Train:T1]
2 Depart L1
3 Depart L2
5 Depart L3

[Passenger:P1]
1 Board T1
6 Detrain

Ich hoffe, diese Anleitung hilft euch auch bei ähnlichen Problemen weiter.

mo374z commented 2 years ago

Hallo,

uns ist leider immer noch nicht ganz klar wie sich der Zug in der Zeiteinheit 2 und 3 bewegt. Die Antwort wurde ja bereits hier näher erläutert: https://github.com/informatiCup/informatiCup2022/issues/16#issuecomment-991925377

  1. T1 leaves S1, T1 is at 2/4 on L1
  2. T1 is at 4/4 on L1 therefore T1 reaches S2, T1 leaves S2, T1 is at 2/5 on L2

Wie kann sich der Zug am Ende des zweiten Schritts bei 2/4 auf L1 befinden und dann zu Beginn von Zeiteinheit 3 schon bei 4/4?

Top-Ranger commented 2 years ago

Moin,

ich bin mir nicht ganz sicher, wie ich euch hier noch weiterhelfen kann. Die Zugbewegung ergibt sich direkt aus der Definition des Modells in der Aufgabenstellung, welches auf Runden seit Abfahrt beruht. Die Bewegung ergibt sich direkt aus der Modelldefinition.

DieGoldeneEnte commented 2 years ago

Aus der Modelldefinition ist nicht direkt erkenntlich, dass ein Zug unter bestimmten Umständen die doppelte Strecke (bis zu 2xSpeed) zurücklegen kann. Wie es hier passiert:

  1. T1 leaves S1, T1 is at 2/4 on L1
  2. T1 is at 4/4 on L1 therefore T1 reaches S2, T1 leaves S2, T1 is at 2/5 on L2