그래프 이론을 처음 사용했습니다.QuickGraph 그래프에서 연결된 구성 요소 얻기
QuickGraph library으로 인접 그래프를 만들었고 궁극적으로 그래프에서 연결된 구성 요소를 갖고 싶습니다. undirGraph.Edges
에서
open QuickGraph
let tup = [(1M,1M); (2M, 18M); (3M, 3M); (4M, 5M); (5M, 24M); (24M, 6M); (7M, 6M); (8M, 9M); (10M, 9M)]
type Vertex = {decimal: decimal}
let edges =
tup
|> List.map (fun x -> ({decimal = fst x}, {decimal = snd x}))
|> List.map (fun x -> Edge<Vertex> x)
//Undirected Graph
let undirGraph = edges.ToUndirectedGraph()
undirGraph.Edges
undirGraph.Vertices
let x = QuickGraph.Algorithms.ConnectedComponents.ConnectedComponentsAlgorithm(undirGraph)
출력은 :
val it : Collections.Generic.IEnumerable<Edge<Vertex>> =
seq
[FSI_0227+Vertex->FSI_0227+Vertex {Source = {decimal = 1M;};
Target = {decimal = 1M;};};
FSI_0227+Vertex->FSI_0227+Vertex {Source = {decimal = 2M;};
Target = {decimal = 18M;};};
FSI_0227+Vertex->FSI_0227+Vertex {Source = {decimal = 3M;};
Target = {decimal = 3M;};};
FSI_0227+Vertex->FSI_0227+Vertex {Source = {decimal = 4M;};
Target = {decimal = 5M;};}; ...]
및 undirGraph.Vertices
에서
val it : Collections.Generic.IEnumerable<Vertex> =
seq
[{decimal = 1M;}; {decimal = 2M;}; {decimal = 18M;}; {decimal = 3M;}; ...]
예상대로.
무향 그래프가 성공적으로 생성되었지만 이제 막혔습니다. 여기에서 그래프의 연결된 구성 요소를 얻는 방법을 모르거나 솔직히 올바른 그래프 구조를 사용하고 있는지 알 수 없습니다.
내가 FSI에x;;
에서 그래프 만 출력의 구성 요소를 포함 할
x
을 기대했을 것이다
은 다음과 같습니다
tuple list
가에 BillTo
및 ShipTo
고객 ID 값을 나타내는 예제 값 데이터 베이스.
QuickGraph 라이브러리의 문서는 드문 드문, 특히 "바로 배우기"위해 노력합니다.
이 질문은 previous question I posted을 대신합니다. 나는 이전의 질문을 수정하는 것을 고려해 보았으나 이것은 완전히 별개의 질문이므로 그대로두기로 결정했다.
다른 시도를 해보셨습니까? R의 igraph는 원하는 것을 할 수 있으며 RProvider를 통해 호출 할 수 있습니다. 실제로 그래프를 그리는 것이 더 쉽습니다. – s952163
있습니다. 나는 그래프를 생성하고'R'의'iGraph' 패키지에서 연결된 구성 요소를 추출 할 수 있습니다. 꽤 쉽게'F # '을 사용하기를 원했습니다. 'F #'에서 할 수 있어야하며,'QuickGraph' 라이브러리가 이미 존재한다는 점을 감안할 때 상대적으로 간단해야합니다. 나는 해결책을 놓치고 있어야한다. – Steven
아하. 몇 가지 간단한 데이터에 대한 스크린 샷과 예상 결과를 표시 할 수 있습니까? 그래프로 작업하는 대부분의 사람들이 .NET을 사용하지 않는다고 생각할 수 있습니다. Btw 위의 경우 그래프가 올바르게 생성되었는지 잘 모르겠습니다. 어쩌면 quickgraph에서 다른 네임 스페이스를 열어야 할 수도 있습니다. – s952163