具有最大機率的路徑
1514。具有最大機率的路徑
難度:中
主題:陣列、圖、堆疊(優先權佇列)、最短路徑
給你一個由n 個節點(0 索引)組成的無向加權圖,由邊列表表示,其中edges[i] = [a, b] 是連接節點a 和b 的無向邊,有成功的機率遍歷該邊succProb[i].
給定兩個節點的起點和終點,找到從起點到終點成功機率最大的路徑,並返回其成功機率。
如果沒有從起點到終點的路徑,返回0。如果您的答案與正確答案相差最多 1e-5.
,我們將接受您的答案。範例1:
- 輸入: n = 3,edges = [[0,1],[1,2],[0,2]],succProb = [0.5,0.5,0.2],start = 0,end = 2
- 輸出: 0.25000
- 說明:從開始到結束有兩條路徑,一條成功機率 = 0.2,另一條成功機率 0.5 * 0.5 = 0.25。
範例2:
- 輸入: n = 3,edges = [[0,1],[1,2],[0,2]],succProb = [0.5,0.5,0.3],start = 0,end = 2
- 輸出: 0.30000
範例 3:
- 輸入: n = 3,edges = [[0,1]],succProb = [0.5],start = 0,end = 2
- 輸出: 0.00000
- 解釋: 0 和 2 之間沒有路徑。
約束:
- 2
- 0
- 開始! =結束
- 0
- a != b
- 0
- 0
- 每兩個節點之間最多有一條邊
提示:
- 機率相乘會導致精度誤差。
- 採用對數機率對數字進行求和而不是相乘。
- 使用 Dijkstra 演算法求否定所有成本後兩個節點之間的最小路徑。
解:
我們可以使用 Dijkstra 演算法的修改版本。您將最大化成功的可能性,而不是尋找最短路徑。
讓我們用 PHP 實作這個解:1514。機率最大的路徑
<?php /** * @param Integer $n * @param Integer[][] $edges * @param Float[] $succProb * @param Integer $start_node * @param Integer $end_node * @return Float */ function maxProbability($n, $edges, $succProb, $start_node, $end_node) { ... ... ... /** * go to ./solution.php */ } // Example usage: $n1 = 3; $edges1 = [[0,1],[1,2],[0,2]]; $succProb1 = [0.5,0.5,0.2]; $start_node1 = 0; $end_node1 = 2; echo maxProbability($n1, $edges1, $succProb1, $start_node1, $end_node1);//Output: 0.25000 $n2 = 3; $edges2 = [[0,1],[1,2],[0,2]]; $succProb2 = [0.5,0.5,0.3]; $start_node2 = 0; $end_node2 = 2; echo maxProbability($n2, $edges2, $succProb2, $start_node2, $end_node2);//Output: 0.30000 $n3 = 3; $edges3 = [[0,1]]; $succProb3 = [0.5; $start_node3 = 0; $end_node3 = 2; echo maxProbability($n3, $edges3, $succProb3, $start_node3, $end_node3); //Output: 0.00000 ?>
解釋:
圖表示:圖表示為鄰接列表,其中每個節點都指向其鄰居以及連接它們的邊的成功機率。
最大機率數組:陣列maxProb用於儲存起始節點到達每個節點的最大機率。
優先權佇列:最大堆(SplPriorityQueue)用於首先探索機率最高的路徑。這對於確保當我們到達目標節點時,找到機率最大的路徑至關重要。
-
演算法:
- 將起始節點的機率初始化為1(因為停留在起始點的機率為1)。
- 使用優先權佇列來探索節點,更新到達每個鄰居的最大機率。
- 如果到達目的節點,則傳回機率。
- 如果不存在路徑,則回傳0。
輸出:
對於提供的範例:
$n = 3; $edges = [[0,1],[1,2],[0,2]]; $succProb = [0.5,0.5,0.2]; $start_node = 0; $end_node = 2;
輸出將為 0.25。
這種方法確保了使用 Dijkstra 演算法的有效解決方案,同時處理機率計算的細節。
聯絡連結
如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
- 領英
- GitHub
以上是具有最大機率的路徑的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

PHPbecamepopularforwebdevelopmentduetoitseaseoflearning,seamlessintegrationwithHTML,widespreadhostingsupport,andalargeecosystemincludingframeworkslikeLaravelandCMSplatformslikeWordPress.Itexcelsinhandlingformsubmissions,managingusersessions,interacti

tosetTherightTimeZoneInphp,restate_default_timezone_set()functionAtthestArtofyourscriptWithavalIdidentIdentifiersuchas'america/new_york'.1.usedate_default_default_timezone_set_set()

TovalidateuserinputinPHP,usebuilt-invalidationfunctionslikefilter_var()andfilter_input(),applyregularexpressionsforcustomformatssuchasusernamesorphonenumbers,checkdatatypesfornumericvalueslikeageorprice,setlengthlimitsandtrimwhitespacetopreventlayout

寫乾淨、易維護的PHP代碼關鍵在於清晰命名、遵循標準、合理結構、善用註釋和可測試性。 1.使用明確的變量、函數和類名,如$userData和calculateTotalPrice();2.遵循PSR-12標準統一代碼風格;3.按職責拆分代碼結構,使用MVC或Laravel式目錄組織;4.避免麵條式代碼,將邏輯拆分為單一職責的小函數;5.在關鍵處添加註釋並撰寫接口文檔,明確參數、返回值和異常;6.提高可測試性,採用依賴注入、減少全局狀態和靜態方法。這些做法提升代碼質量、協作效率和後期維護便利性。

thephpfunctionserize()andunSerialize()redustoconvertComplexdatStructDestoresToroStoroStoroSandaBackagagain.1.Serialize()

可以將PHP代碼嵌入HTML文件中,但需確保文件以.php為擴展名,以便服務器能正確解析。使用標準的標籤包裹PHP代碼,可在HTML中任意位置插入動態內容。此外,可在同一文件中多次切換PHP與HTML,實現條件渲染等動態功能。務必注意服務器配置及語法正確性,避免因短標籤、引號錯誤或遺漏結束標籤導致問題。

Yes,youcanrunSQLqueriesusingPHP,andtheprocessinvolveschoosingadatabaseextension,connectingtothedatabase,executingqueriessafely,andclosingconnectionswhendone.Todothis,firstchoosebetweenMySQLiorPDO,withPDObeingmoreflexibleduetosupportingmultipledatabas
