【发布时间】:2010-03-11 02:12:40
【问题描述】:
有没有人在标准 ML 中有旅行商问题的解决方案,请告诉我。
我尝试了很多,但没有成功。
【问题讨论】:
标签: algorithm sml traveling-salesman
有没有人在标准 ML 中有旅行商问题的解决方案,请告诉我。
我尝试了很多,但没有成功。
【问题讨论】:
标签: algorithm sml traveling-salesman
我不知道如何在 SML 中使用二维数组。这是一个 F# 解决方案:
let salesman2 (g:int array array) =
let n = Array.length g
let rec salesman' visited last acc =
if Set.count visited = n then acc
else
{0..n-1}
|> Seq.filter (fun i->not (Set.contains i visited))
|> Seq.map (fun i->salesman' (Set.add i visited) i (acc + g.[last].[i]))
|> Seq.min
salesman' Set.empty 0 0
let g = [|[|0;1;2;4|]; [|1;0;2;2;|]; [|2;2;0;3|]; [|4;2;3;0|] |]
salesman2 g
如果您了解 SML,将其翻译成 SML 应该很简单。
【讨论】: