QuickGraph, как использовать метод расширения StronglyConnectedComponents - PullRequest
2 голосов
/ 13 сентября 2011

В рамках моих первых экспериментов с C # (на Mono 2.6.7) я пытаюсь использовать метод StronglyConnectedComponents из QuickGraph. Вот мой код:

using System;
using QuickGraph;
using QuickGraph.Data;
using System.Collections.Generic;
using QuickGraph.Algorithms;

namespace Graph
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            IVertexListGraph<int,Edge<int>> graph;
            graph = new AdjacencyGraph<int,Edge<int>>();
            IDictionary<int,int> components=new Dictionary<int,int>();  
            int noc = graph.StronglyConnectedComponents(out components);
        }
    }
}

При попытке скомпилировать код выше, я получаю сообщение об ошибке (в MonoDevelop):

Error CS1061: Type `QuickGraph.IVertexListGraph<int,QuickGraph.Edge<int>>' does not 
contain a definition for `StronglyConnectedComponents' and no extension method 
`StronglyConnectedComponents' of type 
`QuickGraph.IVertexListGraph<int,QuickGraph.Edge<int>>' could be found 
(are you missing a using directive or an assembly reference?) (CS1061) (Graph)

Как видно из документации, должен быть доступен метод расширения:

public static int StronglyConnectedComponents<TVertex, TEdge>(
    IVertexListGraph<TVertex, TEdge> g,
    out IDictionary<TVertex, int> components
)

Кроме того, я сослался на все три .dll из QuickGraph. Чего мне не хватает?

1 Ответ

3 голосов
/ 14 сентября 2011

Хорошо, я только что проверил его, и он работает для меня на Mono 2.10.5 (Ubuntu), который у меня сейчас есть, так что рассмотрите возможность обновления. 2.6.7 очень старый. Я только что скачал быструю библиотеку графов, ссылался только на одну dll (QuickGraph.dll), копировал ваш код (только что удалил с помощью QuickGraph.Data), и он компилируется и запускается без проблем.

...