0

我正在尝试生成图中节点元素列表的幂集。我已经从上一篇文章中识别并修改了以下代码(集合的唯一组合

Public Function PowerSet(ByVal s As List(Of Node)) As List(Of List(Of Node))

    Dim ini As List(Of List(Of Node)) = New List(Of List(Of Node))
    Return s.Aggregate(ini, Function(a, b) a.Concat(a.Select(Function(x) x.Concat({b}))))

End Function

我正在使用测试功能

For Each x In G.PowerSet(G.internal_nodes_in_path)
    Console.WriteLine(x)
Next

但是,我得到一个指向 PowerSet 函数中的函数(a,b)的无效转换异常错误:

附加信息:无法转换类型为“WhereSelectListIterator 2[System.Collections.Generic.List1[cDAG_with_classes.Node],System.Collections.Generic.IEnumerable 1[cDAG_with_classes.Node]]' to type 'System.Collections.Generic.IEnumerable1[System.Collections.Generic.List`1[cDAG_with_classes.Node]]”的对象。

任何人都可以就我可能出错的地方提供一些建议吗?

谢谢

4

1 回答 1

0

所以我得到了这个风滚草徽章。不知道这是好事还是坏事?!不管怎样,我回到了基础,拿出了我的书,想出了一个更好的解决方案(更重要的是一个有效的解决方案)。对于任何在未来翻滚(-杂草)的人......

Public Function PowerSet(Of T)(ByVal s As IEnumerable(Of T)) As IEnumerable(Of IEnumerable(Of T))
    s = P.nodes_in_path
    Dim result = From m In Enumerable.Range(0, 1 << s.Count)
            Select
               From i In Enumerable.Range(0, s.Count)
               Where (m And (1 << i)) <> 0
                   Select s(i)
    Return result

End Function
于 2014-04-14T17:11:48.890 回答