我正在將一款遊戲作爲一個課程項目進行研究,並且建議我使用Graph ADT來表示世界地圖上的一組領土,以便每個頂點都是一個領土,邊緣代表相鄰領域,玩家可以在兩者之間移動。我發現了Graph ADT(JGraphT)的一個很好的Java庫,但是我完全不知道邊緣應該是什麼類型...此圖ADT中的邊緣類型應該是什麼?
例如,Graph<V,E>
接口清楚地要求我爲頂點定義一個對象類型我認爲使用我的Territory
類型非常有意義),但邊緣應該是什麼?我想不出任何有意義的對象類型作爲邊緣。
我正在將一款遊戲作爲一個課程項目進行研究,並且建議我使用Graph ADT來表示世界地圖上的一組領土,以便每個頂點都是一個領土,邊緣代表相鄰領域,玩家可以在兩者之間移動。我發現了Graph ADT(JGraphT)的一個很好的Java庫,但是我完全不知道邊緣應該是什麼類型...此圖ADT中的邊緣類型應該是什麼?
例如,Graph<V,E>
接口清楚地要求我爲頂點定義一個對象類型我認爲使用我的Territory
類型非常有意義),但邊緣應該是什麼?我想不出任何有意義的對象類型作爲邊緣。
嗯,比如說:
(1)
public class Border {
// ... put here anything that's useful
// e.g. length of border or type of border (land,sea,river)
}
的邊緣實際上是兩個地區之間的邊界 。
因此,對我來說,它是有意義的 邊緣是類邊界。
另一個想法:
(2)
public class Distance {
// ... put here anything that's useful
// e.g. the distance between the two capitals
}
我通常代表在我的頭上的圖形彷彿 頂點是首都,並且邊緣說 首都之間的道路(我指的是任何兩個接壤的 州/地區)。
如果您需要邊框權重(對於距離等),jgrapht庫包含一個稱爲DefaultWeightedEdge
的邊緣類型。否則,您可能只使用DefaultEdge
類。
這是一個更實際的答案,即這些是jgrapht中的實際類,它適合您的目的。如果你正在尋找一個更概念化的答案,我認爲peter.petrov關於Border類的答案是非常有用的。
這是一個有趣的想法,但我想知道是否真的有必要爲邊緣定義類型?我的意思是......一個「邊框」是整齊的,但在我的遊戲中這樣一個班級沒有任何用處。 – agent154
我不知道你的要求。但例如明天他們可能會要求你報告邊界的長度或其他內容,那麼這個長度將是邊界的一個字段。如果你不需要像我建議的邊框那樣的特殊類,那麼只需使用Integer或者Boolean :)你可以看到,這一切都取決於你的實際需求。 –
我用另一個想法更新了我的答案。但這一切都取決於您的要求(以及您選擇使用的圖書館的要求)。 –