2015-02-23 71 views
2

我正在使用PriorityQueue和A *的項目。經過深入挖掘,我認爲我遇到的問題的一部分,而我的搜索試圖解決我的問題是在PriorityQueue。我猜測,當它產生相同得分的節點時(比如前一個和後一個),它會選擇一個來自前一個而不是最近生成的節點。斯卡拉PriorityQueue衝突解決?

有沒有人知道如果PriorityQueue優先級最新的節點,如果分數是相同的?如果沒有,我該如何做到這一點?

謝謝!

+0

你試過這個嗎?如果您創建一個'PriorityQueue'並插入多個重量相同的項目,會發生什麼?應該是微不足道的確認。 – dimo414 2015-02-23 21:57:10

+0

@ dimo414:它可能會生成一個反例,但實際上並沒有確認任何內容。這可能是巧合。 – Bergi 2015-02-23 22:09:33

+0

如果它生成一個反例,它會回答你的問題(PriorityQueue是否優先考慮最新節點?No.)即使你正在尋找概念答案,花時間去探索實際答案是值得的,對於你自己和其他誰可能會遇到您的帖子,以及可能會嘗試回答您的問題的人。你向問題展示的更多努力,其他人會願意幫助你。 – dimo414 2015-02-24 02:55:11

回答

2

PriorityQueue使用堆來選擇下一個元素。除此之外,它不保證如何訂購元素。如果對節點按加入順序進行排序對您來說很重要,您應該保留添加的項目數量並按照元組(priority, -order)確定優先級。

如果您做了其他任何事情,即使它現在正常工作,它可能會在任意時間中斷,因爲API不能保證它在相同元素中的選擇。

+0

這是正確的答案。謝謝! – Steve 2015-02-23 23:04:02