我需要存儲一個圖表,遊戲的地圖用C編寫的遊戲服務器內如何實現在C靜態圖
有圖有〜200個節點和3種邊緣可連接兩臺節點(這三種也可以重疊:例如,節點可以通過兩種不同類型的兩個邊連接)。一個節點的最大度是5-6個節點。
我想什麼有是有一種有效的方式來實現這種靜態結構,讓我做簡單的操作,如
- 是N1連接到N2? (在確定性響應的情況下具有各種邊緣)
- n1連接到什麼? (具有各種邊緣或特定的一種)
但是在多線程環境中,因爲會有很多依賴相同靜態圖形的遊戲實例。
由於圖不能被修改,並且該結構是衆所周知的我敢肯定有一些技巧來實現它在陰涼的方式使用最少的資源成爲可能。
我想避免使用STL或升壓現在..你有可能適應以及數據結構的任何線索?
(這不是一個過早的優化,但事實是,它會在VPS運行,我沒有太多的RAM既沒有CPU供電,所以我需要保持它緊)
編輯:只是因爲我忘了(和感謝,讓我意識到這一點)圖爲無向所以每邊是對稱的。在提前
感謝
唉,打我吧。只是想補充一點,如果圖形是無向的,你只需要存儲一半的數組。 (20KB) – wds 2010-07-06 12:25:54
如果我正在實施,我會懶得花大量時間來節省一半的內存空間。此外,該問題暗示OP也將尋找反向連接。我的方法是「對讀者進行改進」:) – 2010-07-06 12:28:12
對於這個問題,如果有三個可能的連接,那麼你只需要每對3位或14925字節。 (如果是三個200 * 199位數組= = 25 * 199個字節,而不是每對使用3個連續位,則查找會更容易) – 2010-07-06 12:40:32