我想在N * N大小的正方形網格中運行BFS。有一個單獨的起始節點。我只能向上/向下/向左/向右移動(而不是對角線)。 電網中可能存在障礙物。網格中BFS隊列的大小
當然,我想用一個隊列來存儲我必須訪問的節點。它將被實現爲大小爲S(固定大小)的圓形數組。我的陣列的最小尺寸是多少?即使在最壞的情況下,我也不希望它溢出。
一個類似的問題是:給定網格中的一個節點,在距離起始節點確切距離K處的節點的最大數量是多少(對於任何0 < K < 2 * N)?
我認爲很難找到這個問題的確切答案,所以一個好的近似就足夠了。
見這個例子中(最右邊的圖片):
這不是一個網格,但我們可以使格柵具有相同的模式(其中白色代表的障礙和黑色的分形是步行的節點)。我們可以看到,我們有很多節點在確切地說是與中心節點的距離相同(實際上這個數字在每次路徑分裂爲兩倍的時候加倍)。 所以我想知道這個數字有多大,以及是否有其他配置可以產生相同的情況。
爲了弄清楚我的問題是:這個數字可以大於2 * N,其中N是N * N正方形網格的大小。
你可以通過一個網格中的同一個節點更多一次,直到你必須清空你的隊列?如果不是,在最壞的情況下,你可以運行整個網格,或N^2個位置。否則,有什麼限制,因爲你可能需要停止一段時間? – Rubens
這是一個BFS,因此每個節點只會添加(並彈出)一次。我不能同時擁有N * N個職位。 – user1637030
我很抱歉,但我並沒有真正解決問題。你有一個網格,NxN,從給定的角度來說,你執行一個BFS。網格中確定節點的子節點是什麼?他們的鄰居沒有被視爲兄弟姐妹?有什麼障礙?在3x3的網格中,如果您從網格中最左邊的最頂端節點開始,那麼您的搜索跨度如何?你能舉個例子嗎? – Rubens