Re: [程式] 模擬城市的電線連接判斷是怎麼做的阿???
※ 引述《chenglap (無想流流星拳)》之銘言:
: ※ 引述《yhn0tgb60 (呦厚厚)》之銘言:
: : 我想也許他們有更好的方法在處裡這個問題 ???
: : 想和大家討論一下這個問題 謝謝了 ^^
: 我覺得以上的分析本身走錯了方向.
: 因為你分析出來的, 是忽視了以下這些東西:
: 1. 模擬城市有電量的限制的, 並不是只要連到發電廠就有電, 而
: 是要發電廠支持得住發電量
: 2. 在模擬城市表現出來的是發電廠會先提供更接近區的電力.
: 3. 可以有兩個不同地方的發電廠, 所以終點可以有兩個, 但到底
: 決定由誰供電卻是謎題.
: 4. 一個較近的電廠的供電額滿, 還是會使用較遠的電廠, 所以也
: 不是單純找最近的電廠
: 因此, 最基本的問題是, 「哪個是起點, 哪個是終點」, 這件事根
: 本就無法在一開始時決定, 既然連起點和終點都不明白, 我們不需
: 要假定這個系統是建立在「路徑搜尋」之上的.
: 而我認為最簡單的做法就是「顏料滲透」法.
: 在古早時代的語言 BGI 帶的繪圖指令中, 已經有 floodfill 這種
: 指令, 簡單來說, 就是填色. 把一個區塊填滿, 直至碰到邊為止.
: 這種指令在 286 的電腦上也不會用很多的時間, 而運作的方式很
: 簡單, 就是從一點開始不斷擴張出去, 直至填完為止. 可以用
: recursion 或者 BFS 類似的方式達成.
: 然則, 你把電網想像成一幅圖的話, 運作方式也是相同的. 很簡單
: , 由電廠開始, 你只要加一個參數是「電量」, 每經過一個會使用
: 電的點處, 就減去相對的數量, 直至填滿或者數值不足為止.
: 你可以想像成, 每座電廠相當於一瓶滾珠, 而電網則是一個迷宮,
: 你做的事情就是在迷宮幾點倒下滾珠, 隨他們自己滾動而已.
: 你有幾座電廠, 就做幾次, 模擬城市一當中沒有小型電廠 (風電,
: 水電) , 只有大型電廠 (煤電, 核電) , 所以電廠的數量不會太多
: , 應該不會超過十個. 相連的電廠更可以直接將電量相加計算.
: 那麼一次的工作量, 大概就是等於電廠數 x floodfill 的工作量,
: 另外, 因為不用顯以及有限額的關係, 所以工作量應該比
: floodfill 要低. 而模擬城市本身的更新速度其實並不很頻繁, 一
: 個月可能只更新五次左右而已.
: 那是 286 也可以支持得來的. 至於你開電纜, 關電纜, 也不會有影
: 響, 運算不應該在你建築或者拆除時進行, 而應該用 timer 計時
: 器定期進行.
: 所以這並非一個「searching」動作, 而是一個「floodfill」的動
: 作, searching 需要找最短的路線, 而你 floodfill 根本就不用顧
: 慮這問題, 只要節省了「尋找最短路線」這個要求, 你就會發覺你
: 不需要用那麼複雜的 algorithm 了.
: 一開始把這問題想成是「路徑尋找」的問題就是盲點, 那會誤導你
: 解決問題的方向的.
我不是學程式的,但是我的想法是
每個小區塊大小是1,並帶有一個數值0或1,0沒電,1有電
所以只要檢查旁邊相鄰的區塊是0還是1就好,全部區塊加起來<150就沒問題(電廠算)
而這個動作只有在建築區塊新增或減少的時候檢查
這樣會不會比較簡單?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.242.159.194
推
07/12 11:50, , 1F
07/12 11:50, 1F
→
07/12 12:42, , 2F
07/12 12:42, 2F
→
07/12 12:43, , 3F
07/12 12:43, 3F
討論串 (同標題文章)