├── .gitignore
├── .travis.yml
├── LICENSE.md
├── README.md
├── Sandwych.QuickGraph.sln
├── Shared.props
├── appveyor.yml
├── build.cake
├── build.ps1
├── build.sh
├── docs
├── .gitignore
├── api
│ ├── .gitignore
│ └── index.md
├── articles
│ ├── intro.md
│ └── toc.yml
├── docfx.json
├── index.md
└── toc.yml
├── src
├── Directory.Build.props
├── Sandwych.QuickGraph.Core
│ ├── AdjacencyGraph.cs
│ ├── Algorithms
│ │ ├── AlgorithmBase.cs
│ │ ├── AlgorithmEventHandler.cs
│ │ ├── AlgorithmExtensions.cs
│ │ ├── CentralityApproximationAlgorithm.cs
│ │ ├── Cliques
│ │ │ ├── BronKerboshMaximumCliqueAlgorithm.cs
│ │ │ ├── MaximumCliqueAlgorithmBase.cs
│ │ │ └── ncliques.pdf
│ │ ├── ComputationState.cs
│ │ ├── Condensation
│ │ │ ├── CondensationGraphAlgorithm.cs
│ │ │ ├── CondensedEdge.cs
│ │ │ ├── EdgeMergeCondensationGraphAlgorithm.cs
│ │ │ └── MergedEdge.cs
│ │ ├── ConnectedComponents
│ │ │ ├── ConnectedComponentsAlgorithm.cs
│ │ │ ├── IncrementalConnectedComponentsAlgorithm.cs
│ │ │ ├── StronglyConnectedComponentAlgorithm.cs
│ │ │ └── WeaklyConnectedComponentsAlgorithm.cs
│ │ ├── Contracts
│ │ │ ├── IAlgorithmContract.cs
│ │ │ └── IComputationContract.cs
│ │ ├── DistanceRelaxers.cs
│ │ ├── EulerianTrailAlgorithm.cs
│ │ ├── Exploration
│ │ │ ├── CloneableVertexGraphExplorerAlgorithm.cs
│ │ │ ├── ITransitionFactory.cs
│ │ │ └── TransitionFactoryImplicitGraph.cs
│ │ ├── IAlgorithm.cs
│ │ ├── IComputation.cs
│ │ ├── IConnectedComponentAlgorithm.cs
│ │ ├── IDistanceRecorderAlgorithm.cs
│ │ ├── IDistanceRelaxer.cs
│ │ ├── IEdgeColorizerAlgorithm.cs
│ │ ├── IEdgePredecessorRecorderAlgorithm.cs
│ │ ├── IEndPathEdgeRecorderAlgorithm.cs
│ │ ├── ITreeBuilderAlgorithm.cs
│ │ ├── IUndirectedTreeBuilderAlgorithm.cs
│ │ ├── IUndirectedVertexPredecessorRecorderAlgorithm.cs
│ │ ├── IVertexColorizerAlgorithm.cs
│ │ ├── IVertexPredecessorRecorderAlgorithm.cs
│ │ ├── IVertexTimeStamperAlgorithm.cs
│ │ ├── LengauerTarjanDominatorAlgorithm.cs
│ │ ├── MaximumBipartiteMatchingAlgorithm.cs
│ │ ├── MaximumFlow
│ │ │ ├── AllVerticesGraphAugmentorAlgorithm.cs
│ │ │ ├── BipartiteToMaximumFlowGraphAugmentorAlgorithm.cs
│ │ │ ├── EdmondsKarpMaximumFlowAlgorithm.cs
│ │ │ ├── GraphAugmentorAlgorithmBase.cs
│ │ │ ├── GraphBalancingAlgorithm.cs
│ │ │ ├── MaximumFlowAlgorithmBase.cs
│ │ │ ├── MultiSourceSinkGraphAugmentorAlgorithm.cs
│ │ │ └── ReverseEdgeAugmentorAlgorithm.cs
│ │ ├── MinimumSpanningTree
│ │ │ ├── IMinimumSpanningTreeAlgorithm.cs
│ │ │ └── KruskalMinimumSpanningTreeAlgorithm.cs
│ │ ├── Observers
│ │ │ ├── Contracts
│ │ │ │ └── IObserverContract.cs
│ │ │ ├── DisposableAction.cs
│ │ │ ├── EdgePredecessorRecorderObserver.cs
│ │ │ ├── EdgeRecorderObserver.cs
│ │ │ ├── IObserver.cs
│ │ │ ├── UndirectedVertexDistanceRecorderObserver.cs
│ │ │ ├── UndirectedVertexPredecessorRecorderObserver.cs
│ │ │ ├── VertexDistanceRecorderObserver.cs
│ │ │ ├── VertexPredecessorPathRecorderObserver.cs
│ │ │ ├── VertexPredecessorRecorderObserver.cs
│ │ │ ├── VertexRecorderObserver.cs
│ │ │ └── VertexTimeStamperObserver.cs
│ │ ├── PageRankAlgorithm.cs
│ │ ├── RandomGraphFactory.cs
│ │ ├── RandomWalks
│ │ │ ├── CyclePoppingRandomTreeAlgorithm.cs
│ │ │ ├── IEdgeChain.cs
│ │ │ ├── IMarkovEdgeChain.cs
│ │ │ ├── MarkovEdgeChainBase.cs
│ │ │ ├── NormalizedMarkovEdgeChain.cs
│ │ │ ├── RandomWalkAlgorithm.cs
│ │ │ ├── RoundRobinEdgeChain.cs
│ │ │ ├── VanishingWeightedMarkovEdgeChain.cs
│ │ │ ├── WeightedMarkedEdgeChain.cs
│ │ │ └── WeightedMarkovEdgeChainBase.cs
│ │ ├── RankedShortestPath
│ │ │ ├── HoffmanPavleyRankedShortestPathAlgorithm.cs
│ │ │ └── RankedShortestPathAlgorithmBase.cs
│ │ ├── RootedAlgorithmBase.cs
│ │ ├── RootedSearchAlgorithmBase.cs
│ │ ├── Search
│ │ │ ├── BestFirstFrontierSearchAlgorithm.cs
│ │ │ ├── BidirectionalDepthFirstSearchAlgorithm.cs
│ │ │ ├── BreadthFirstSearchAlgorithm.cs
│ │ │ ├── DepthFirstSearchAlgorithm.cs
│ │ │ ├── EdgeDepthFirstSearchAlgorithm.cs
│ │ │ ├── ImplicitDepthFirstSearchAlgorithm.cs
│ │ │ ├── ImplicitEdgeDepthFirstSearchAlgorithm.cs
│ │ │ ├── UndirectedBreathFirstSearchAlgorithm.cs
│ │ │ └── UndirectedDepthFirstSearchAlgorithm.cs
│ │ ├── Services
│ │ │ ├── IAlgorithmComponent.cs
│ │ │ ├── IAlgorithmServices.cs
│ │ │ ├── ICancelManager.cs
│ │ │ └── IService.cs
│ │ ├── ShortestPath
│ │ │ ├── AStartShortestPathAlgorithm.cs
│ │ │ ├── BellmanFordShortestPathAlgorithm.cs
│ │ │ ├── DagShortestPathAlgorithm.cs
│ │ │ ├── DijkstraShortestPathAlgorithm.cs
│ │ │ ├── FloydWarshallAllShortestPathAlgorithm.cs
│ │ │ ├── ShortestPathAlgorithmBase.cs
│ │ │ ├── UndirectedDijkstraShortestPathAlgorithm.cs
│ │ │ └── UndirectedShortestPathAlgorithmBase.cs
│ │ ├── TarjanOfflineLeastCommonAncestorAlgorithm.cs
│ │ └── TopologicalSort
│ │ │ ├── SourceFirstTopologicalSortAlgorithm.cs
│ │ │ ├── TopologicalSortAlgorithm.cs
│ │ │ ├── UndirectedFirstTopologicalSortAlgorithm.cs
│ │ │ └── UndirectedTopologicalSortAlgorithm.cs
│ ├── ArrayAdjacencyGraph.cs
│ ├── ArrayBidirectionalGraph.cs
│ ├── ArrayUndirectedGraph.cs
│ ├── BidirectionAdapterGraph.cs
│ ├── BidirectionalGraph.cs
│ ├── BidirectionalMatrixGraph.cs
│ ├── Collections
│ │ ├── BinaryHeap.cs
│ │ ├── BinaryQueue.cs
│ │ ├── EdgeEdgeDictionary.cs
│ │ ├── EdgeList.cs
│ │ ├── FibonacciHeap.cs
│ │ ├── FibonacciQueue.cs
│ │ ├── ForestDisjointSet.cs
│ │ ├── IDisjointSet.cs
│ │ ├── IEdgeList.cs
│ │ ├── IPriorityQueue.cs
│ │ ├── IQueue.cs
│ │ ├── IVertexEdgeDictionary.cs
│ │ ├── Queue.cs
│ │ ├── SoftHeap.cs
│ │ ├── VertexEdgeDictionary.cs
│ │ └── VertexList.cs
│ ├── CompressedSparseRowGraph.cs
│ ├── Contracts
│ │ ├── Collections
│ │ │ ├── IDisjointSetContract.cs
│ │ │ ├── IEdgeListContract.cs
│ │ │ └── IVertexEdgeDictionaryContract.cs
│ │ ├── DummyContract.cs
│ │ ├── EnumerableContract.cs
│ │ ├── GraphContract.cs
│ │ ├── IBidirectionalGraphContract.cs
│ │ ├── IBidirectionalIncidenceGraphContract.cs
│ │ ├── ICloneableEdgeContract.cs
│ │ ├── IEdgeContract.cs
│ │ ├── IEdgeListGraphContract.cs
│ │ ├── IEdgeSetContract.cs
│ │ ├── IGraphContract.cs
│ │ ├── IImplicitGraphContract.cs
│ │ ├── IImplicitUndirectedGraphContract.cs
│ │ ├── IImplicitVertexSetContract.cs
│ │ ├── IIncidenceGraphContract.cs
│ │ ├── IMutableBidirectionalGraphContract.cs
│ │ ├── IMutableEdgeListGraphContract.cs
│ │ ├── IMutableGraphContract.cs
│ │ ├── IMutableIncidenceGraphContract.cs
│ │ ├── IMutableUndirectedGraphContract.cs
│ │ ├── IMutableVertexAndEdgeSetContract.cs
│ │ ├── IMutableVertexListGraphContract.cs
│ │ ├── IMutableVertexSetContract.cs
│ │ ├── IUndirectedEdgeContract.cs
│ │ ├── IUndirectedGraphContract.cs
│ │ └── IVertexSetContract.cs
│ ├── CreateEdgeDelegate.cs
│ ├── CreateVertexDelegate.cs
│ ├── DelegateBidirectionalIncidenceGraph.cs
│ ├── DelegateImplicitGraph.cs
│ ├── DelegateImplicitUndirectedGraph.cs
│ ├── DelegateIncidenceGraph.cs
│ ├── DelegateUndirectedGraph.cs
│ ├── DelegateVertexAndEdgeListGraph.cs
│ ├── Directory.Build.props
│ ├── Edge.cs
│ ├── EdgeEdgeEventArgs.cs
│ ├── EdgeEventArgs.cs
│ ├── EdgeExtensions.cs
│ ├── EdgeFactory.cs
│ ├── EdgeIdentity.cs
│ ├── EdgeListGraph.cs
│ ├── EdgePredicate.cs
│ ├── Enumerable.cs
│ ├── EquatableEdge.cs
│ ├── FuncDelegates.cs
│ ├── GraphColor.cs
│ ├── GraphExtensions.cs
│ ├── HashCodeHelper.cs
│ ├── IBidirectionalGraph.cs
│ ├── IBidirectionalIncidenceGraph.cs
│ ├── ICloneableEdge.cs
│ ├── IEdge.cs
│ ├── IEdgeListAndIncidenceGraph.cs
│ ├── IEdgeListGraph.cs
│ ├── IEdgeSet.cs
│ ├── IGraph.cs
│ ├── IHierarchy.cs
│ ├── IHyperEdge.cs
│ ├── IImplicitGraph.cs
│ ├── IImplicitUndirectedGraph.cs
│ ├── IImplicitVertexSet.cs
│ ├── IIncidenceGraph.cs
│ ├── IMutableBidirectionalGraph.cs
│ ├── IMutableEdgeListGraph.cs
│ ├── IMutableGraph.cs
│ ├── IMutableIncidenceGraph.cs
│ ├── IMutableUndirectedGraph.cs
│ ├── IMutableVertexAndEdgeListGraph.cs
│ ├── IMutableVertexAndEdgeSet.cs
│ ├── IMutableVertexListGraph.cs
│ ├── IMutableVertexSet.cs
│ ├── ITagged.cs
│ ├── IUndirectedEdge.cs
│ ├── IUndirectedGraph.cs
│ ├── IVertexAndEdgeListGraph.cs
│ ├── IVertexListGraph.cs
│ ├── IVertexSet.cs
│ ├── IdentifiableEdgeFactory.cs
│ ├── IdentifiableVertexFactory.cs
│ ├── NegativeCycleGraphException.cs
│ ├── NegativeWeightException.cs
│ ├── NonAcyclicGraphException.cs
│ ├── NonStronglyConnectedGraphException.cs
│ ├── ParallelEdgeNotAllowedException.cs
│ ├── Predicates
│ │ ├── FilteredBidirectionalGraph.cs
│ │ ├── FilteredEdgeListGraph.cs
│ │ ├── FilteredGraph.cs
│ │ ├── FilteredImplicitGraph.cs
│ │ ├── FilteredImplicitVertexSetGraph.cs
│ │ ├── FilteredIncidenceGraph.cs
│ │ ├── FilteredUndirectedGraph.cs
│ │ ├── FilteredVertexAndEdgeListGraph.cs
│ │ ├── FilteredVertexListGraph.cs
│ │ ├── InDictionaryVertexPredicate.cs
│ │ ├── IsolatedVertexPredicate.cs
│ │ ├── ResidualEdgePrediate.cs
│ │ ├── ReversedResidualEdgePredicate.cs
│ │ └── SinkVertexPredicate.cs
│ ├── QuickGraphException.cs
│ ├── ReversedBidirectionalListGraph.cs
│ ├── SEdge.cs
│ ├── SEquatableEdge.cs
│ ├── SEquatableUndirectedEdge.cs
│ ├── SReversedEdge.cs
│ ├── STaggedEdge.cs
│ ├── STaggedEquatableEdge.cs
│ ├── STaggedUndirectedEdge.cs
│ ├── SUndirectedEdge.cs
│ ├── Sandwych.QuickGraph.Core.csproj
│ ├── TaggedEdge.cs
│ ├── TaggedEquatableEdge.cs
│ ├── TaggedUndirectedEdge.cs
│ ├── TryFuncDelegates.cs
│ ├── UndirectedBidirectionalGraph.cs
│ ├── UndirectedEdge.cs
│ ├── UndirectedEdgeEventArgs.cs
│ ├── UndirectedGraph.cs
│ ├── VertexEventArgs.cs
│ ├── VertexFactory.cs
│ ├── VertexIdentity.cs
│ ├── VertexIndexer.cs
│ └── VertexPredicate.cs
├── Sandwych.QuickGraph.Data
│ ├── DataRelationEdge.cs
│ ├── DataSetGraph.cs
│ ├── DataSetGraphExtensions.cs
│ ├── DataSetGraphPopulatorAlgorithm.cs
│ ├── DataSetGraphvizAlgorithm.cs
│ └── Sandwych.QuickGraph.Data.csproj
├── Sandwych.QuickGraph.Graphviz
│ ├── CondensatedGraphRenderer.cs
│ ├── Dot
│ │ ├── GraphvizArrow.cs
│ │ ├── GraphvizArrowClipping.cs
│ │ ├── GraphvizArrowFilling.cs
│ │ ├── GraphvizArrowShape.cs
│ │ ├── GraphvizClusterMode.cs
│ │ ├── GraphvizColor.cs
│ │ ├── GraphvizEdge.cs
│ │ ├── GraphvizEdgeDirection.cs
│ │ ├── GraphvizEdgeExtremity.cs
│ │ ├── GraphvizEdgeLabel.cs
│ │ ├── GraphvizEdgeStyle.cs
│ │ ├── GraphvizFont.cs
│ │ ├── GraphvizGraph.cs
│ │ ├── GraphvizImageType.cs
│ │ ├── GraphvizLabelJustification.cs
│ │ ├── GraphvizLabelLocation.cs
│ │ ├── GraphvizLayer.cs
│ │ ├── GraphvizLayerCollection.cs
│ │ ├── GraphvizOutputMode.cs
│ │ ├── GraphvizPageDirection.cs
│ │ ├── GraphvizPoint.cs
│ │ ├── GraphvizRankDirection.cs
│ │ ├── GraphvizRatioMode.cs
│ │ ├── GraphvizRecord.cs
│ │ ├── GraphvizRecordCell.cs
│ │ ├── GraphvizRecordCellCollection.cs
│ │ ├── GraphvizRecordEscaper.cs
│ │ ├── GraphvizSize.cs
│ │ ├── GraphvizVertex.cs
│ │ ├── GraphvizVertexShape.cs
│ │ └── GraphvizVertexStyle.cs
│ ├── EdgeMergeCondensatedGraphRenderer.cs
│ ├── FormatEdgeEventArgs.cs
│ ├── FormatVertexEventArgs.cs
│ ├── GraphRendererBase.cs
│ ├── GraphvizAlgorithm.cs
│ ├── GraphvizExtensions.cs
│ ├── IDotEngine.cs
│ ├── Sandwych.QuickGraph.Graphviz.csproj
│ └── SvgHtmlWrapper.cs
└── Sandwych.QuickGraph.Serialization
│ ├── DirectedGraphML
│ └── Dgml.cs
│ ├── DirectedGraphMLAlgorithm.cs
│ ├── DirectedGraphMLExtensions.cs
│ ├── GraphMLDeserializer.cs
│ ├── GraphMLExtensions.cs
│ ├── GraphMLSerializer.cs
│ ├── GraphMLXmlResolver.cs
│ ├── Sandwych.QuickGraph.Serialization.csproj
│ ├── SerializationExtensions.cs
│ ├── SerializationHelper.cs
│ ├── SerializerBase.cs
│ ├── XmlSerializableGraphBase.cs
│ ├── graphml-structure.xsd
│ ├── graphml.dtd
│ └── graphml.xsd
└── test
└── Sandwych.QuickGraph.Tests
├── Algorithms
├── AlgorithmExtensionsTest.cs
├── Condensation
│ ├── StronglyConnectedCondensationGraphAlgorithmTest.cs
│ └── WeaklyConnectedCondensationGraphTest.cs
├── ConnectedComponents
│ ├── ConnectedComponentsAlgorithmTest.cs
│ ├── IncrementalConnectedComponentsAlgorithmTest.cs
│ └── WeaklyConnectedComponentsAlgorithmTest.cs
├── EulerianTrailAlgorithmTest.cs
├── MaximumBipartiteMatchingAlgorithmTest.cs
├── MaximumFlow
│ ├── AllVerticesGraphAugmentorAlgorithmTest.cs
│ └── EdmondsKarpMaximumFlowAlgorithmTest.cs
├── MinimumSpanningTree
│ └── MinimumSpanningTreeTest.cs
├── RandomWalks
│ ├── CyclePoppingRandomTreeAlgorithmTest.cs
│ ├── EdgeChainTest.cs
│ └── RandomWalkAlgorithmTest.cs
├── RankedShortestPath
│ └── HoffmanPavleyRankedShortestPathAlgorithmTest.cs
├── Search
│ ├── BestFirstFrontierSearchAlgorithmTest.cs
│ ├── BidirectionalDepthFirstSearchAlgorithmTest.cs
│ ├── BreadthFirstSearchAlgirthmTest.cs
│ ├── DepthFirstSearchAlgorithmTest.cs
│ ├── ParallelBreadthFirstSearchAlgirthmTest.cs
│ ├── UndirectedBreathFirstSearchAlgorithmTest.cs
│ └── UndirectedDepthFirstSearchAlgorithmTest.cs
├── ShortestPath
│ ├── AStarShortestPathAlgorithmTest.cs
│ ├── BellmanFordShortestPathTest.cs
│ ├── DagShortestPathAlgorithmTest.cs
│ ├── DijkstraShortestPathAlgorithmTest.cs
│ ├── FloydWarshallAllPairShortestPathAlgorithmTest.cs
│ └── UndirectedDijkstraShortestPathAlgorithmTest.cs
├── SourceFirstTopologicalSortAlgorithmTest.cs
├── StronglyConnectedComponentsAlgorithmTest.cs
├── TarjanOfflineLeastCommonAncestorAlgorithmTest.cs
├── TopologicalSortAlgorithmTest.cs
├── UndirectedFirstTopologicalSortAlgorithmTest.cs
└── UndirectedTopologicalSortAlgorithmTest.cs
├── Collections
├── BinaryHeapTest.cs
├── FibonacciHeapTest.cs
├── ForestDisjointSetTTest.cs
└── SoftHeapTTest.cs
├── DataStructureTest.cs
├── DegreeTest.cs
├── EdgeExtensionsTest.cs
├── EdgeListGraphInvariant.cs
├── EdgeTVertexTest.cs
├── Factories
├── AdjacencyGraphFactory.cs
├── ArrayAdjacencyGraphFactory.cs
├── EdgeFactory.cs
├── FibonacciHeapFactory.cs
├── ForestDisjointSetFactory.cs
├── StringVertexFactory.cs
└── UndirectedGraphFactory.cs
├── GraphConsoleSerializer.cs
├── GraphDataAttribute.cs
├── MutableVertexAndEdgeListGraphTest.cs
├── Regression
├── DijkstraTest.cs
├── HoffmanPavleyTest.cs
└── ShortestPathBellmanFordTest.cs
├── Sandwych.QuickGraph.Tests.csproj
├── Serialization
├── DirectedGraphMLExtensionsTest.cs
├── GraphMLSerializerTest.cs
├── GraphMLSerializerWithArgumentsTest.cs
├── Repro13428.cs
├── SystemSerializationTest.cs
├── TestGraphFactory.cs
└── XmlSerializationTest.cs
├── TaggedEdgeTVertexTTagTest.cs
├── TestCategories.cs
├── TestConsole.cs
├── TestHelper.cs
├── UndirectedGraphInvariant.cs
└── graphml
├── g.100.1.graphml
├── g.100.3.graphml
├── g.57.26.graphml
├── g.57.27.graphml
├── g.64.18.graphml
├── g.66.6.graphml
├── g.79.7.graphml
├── g.80.6.graphml
├── g.81.16.graphml
├── g.81.9.graphml
├── g.82.1.graphml
├── g.86.3.graphml
├── repro12273.xml
└── repro12359.graphml
/.gitignore:
--------------------------------------------------------------------------------
1 | build
2 | bin
3 | Bin
4 | obj
5 | BenchmarkDotNet.Artifacts
6 | _ReSharper*
7 | *.swp
8 | *.user
9 | *.patch
10 | *.hg
11 | *.sln.cache
12 | desktop.ini
13 | *.ReSharper
14 | *.orig
15 | *.suo
16 | *.itrace.csdef
17 | *.build.csdef
18 | packages
19 | src/*.testsettings
20 | src/TestResults
21 | src/*.vsmdi
22 | artifacts
23 | *.vsp
24 | *.vspx
25 | *.psess
26 | project.lock.json
27 | *.mdb
28 | .vs/
29 | .vscode/
30 | .build/
31 | .testPublish/
32 | .dotnetcli
33 | *.qgs~
34 | *.output.csv
35 | /tools
36 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: csharp
2 | sudo: false
3 | dist: trusty
4 | osx_image: none
5 | mono: 5.10.0
6 | dotnet: 2.1.4
7 | os:
8 | - linux
9 |
10 | env:
11 | global:
12 | - DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
13 | - DOTNET_CLI_TELEMETRY_OPTOUT: 1
14 |
15 |
16 | branches:
17 | only:
18 | - master
19 | - release
20 | - dev
21 | - /^.*-wip$/
22 | - /^(.*\/)?ci-.*$/
23 |
24 | script:
25 | - ./build.sh "-target=Travis"
26 |
27 | cache:
28 | directories:
29 | - .packages
30 | - tools
31 |
32 | notifications:
33 | email: false
34 |
--------------------------------------------------------------------------------
/Shared.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Copyright (C) Jonathan "Peli" de Halleux
5 | Peli de Halleux, Wei Li
6 | https://github.com/oldrev/Sandwych.QuickGraph
7 | https://github.com/oldrev/Sandwych.QuickGraph/blob/master/LICENSE.md
8 | netstandard2.0
9 | $(VersionSuffix)-$(BuildNumber)
10 | true
11 | portable
12 | false
13 | false
14 | false
15 | false
16 | false
17 | false
18 | false
19 | false
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/appveyor.yml:
--------------------------------------------------------------------------------
1 | image: Visual Studio 2017
2 |
3 | init:
4 | - git config --global core.autocrlf true
5 |
6 | install:
7 | - ps: $env:BuildNumber= $env:APPVEYOR_BUILD_NUMBER
8 | - ps: $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = true
9 | - ps: $env:NUGET_XMLDOC_MODE = "skip"
10 | - ps: $env:DOTNET_CLI_TELEMETRY_OPTOUT = 1
11 | - ps: $env:CAKE_SETTINGS_SKIPVERIFICATION = true
12 |
13 | build_script:
14 | - ps: .\build.ps1 -Target "Appveyor-Build"
15 |
16 | test_script:
17 | - ps: .\build.ps1 -Target "Appveyor-Test"
18 |
19 | artifacts:
20 | - path: 'src\Sandwych.QuickGraph.Core\**\*.nupkg'
21 |
22 | deploy:
23 | - provider: NuGet
24 | on:
25 | branch: master
26 | server: https://www.nuget.org/api/v2/package
27 | api_key:
28 | secure: DpUsMQuMOcXRXy74iyC+urW4DQE2o0NyNxe22MhXAg9WdMkDikciAhZgbHTkWsNr
29 | skip_symbols: true
30 | artifact: /.*\.nupkg/
31 |
32 | # Build cache
33 | cache:
34 | - tools -> build.cake
35 | - packages -> build.cake
36 |
--------------------------------------------------------------------------------
/docs/.gitignore:
--------------------------------------------------------------------------------
1 | ###############
2 | # folder #
3 | ###############
4 | /**/DROP/
5 | /**/TEMP/
6 | /**/packages/
7 | /**/bin/
8 | /**/obj/
9 | _site
10 |
--------------------------------------------------------------------------------
/docs/api/.gitignore:
--------------------------------------------------------------------------------
1 | ###############
2 | # temp file #
3 | ###############
4 | *.yml
5 | .manifest
6 |
--------------------------------------------------------------------------------
/docs/api/index.md:
--------------------------------------------------------------------------------
1 | # PLACEHOLDER
2 | TODO: Add .NET projects to the *src* folder and run `docfx` to generate **REAL** *API Documentation*!
3 |
--------------------------------------------------------------------------------
/docs/articles/intro.md:
--------------------------------------------------------------------------------
1 | # Add your introductions here!
2 |
--------------------------------------------------------------------------------
/docs/articles/toc.yml:
--------------------------------------------------------------------------------
1 | - name: Introduction
2 | href: intro.md
3 |
--------------------------------------------------------------------------------
/docs/docfx.json:
--------------------------------------------------------------------------------
1 | {
2 | "metadata": [
3 | {
4 | "src": [
5 | {
6 | "src": "../src/",
7 | "files": [ "**/*.cs" ],
8 | "exclude": [
9 | "**/obj/**",
10 | "**/bin/**",
11 | "_site/**"
12 | ]
13 | }
14 | ],
15 | "dest": "api",
16 | "disableGitFeatures": false
17 | }
18 | ],
19 | "build": {
20 | "content": [
21 | {
22 | "files": [
23 | "api/**.yml",
24 | "api/index.md"
25 | ]
26 | },
27 | {
28 | "files": [
29 | "articles/**.md",
30 | "articles/**/toc.yml",
31 | "toc.yml",
32 | "*.md"
33 | ]
34 | }
35 | ],
36 | "resource": [
37 | {
38 | "files": [
39 | "images/**"
40 | ]
41 | }
42 | ],
43 | "overwrite": [
44 | {
45 | "files": [
46 | "apidoc/**.md"
47 | ],
48 | "exclude": [
49 | "obj/**",
50 | "_site/**"
51 | ]
52 | }
53 | ],
54 | "dest": "_site",
55 | "globalMetadataFiles": [],
56 | "fileMetadataFiles": [],
57 | "template": [
58 | "default"
59 | ],
60 | "postProcessors": [],
61 | "noLangKeyword": false,
62 | "keepFileLink": false,
63 | "cleanupCacheHistory": false,
64 | "disableGitFeatures": false
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/docs/index.md:
--------------------------------------------------------------------------------
1 | # This is the **HOMEPAGE**.
2 | Refer to [Markdown](http://daringfireball.net/projects/markdown/) for how to write markdown files.
3 | ## Quick Start Notes:
4 | 1. Add images to the *images* folder if the file is referencing an image.
5 |
--------------------------------------------------------------------------------
/docs/toc.yml:
--------------------------------------------------------------------------------
1 | - name: Articles
2 | href: articles/
3 | - name: Api Documentation
4 | href: api/
5 | homepage: api/index.md
6 |
--------------------------------------------------------------------------------
/src/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | graph;topologic;quickgraph
5 | 1.1.0
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/Sandwych.QuickGraph.Core/Algorithms/AlgorithmEventHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace QuickGraph.Algorithms
6 | {
7 | public delegate void AlgorithmEventHandler(
8 | IAlgorithm sender,
9 | EventArgs e);
10 | }
11 |
--------------------------------------------------------------------------------
/src/Sandwych.QuickGraph.Core/Algorithms/Cliques/BronKerboshMaximumCliqueAlgorithm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using QuickGraph.Algorithms.Services;
6 |
7 | namespace QuickGraph.Algorithms.Cliques
8 | {
9 | // under construction
10 | class BronKerboshMaximumCliqueAlgorithm
11 | : MaximumCliqueAlgorithmBase
12 | where TEdge : IEdge
13 | {
14 | protected BronKerboshMaximumCliqueAlgorithm(
15 | IAlgorithmComponent host,
16 | IUndirectedGraph visitedGraph)
17 | : base(host, visitedGraph)
18 | {}
19 |
20 | protected BronKerboshMaximumCliqueAlgorithm(
21 | IUndirectedGraph visitedGraph)
22 | : base(visitedGraph)
23 | {}
24 |
25 | protected override void InternalCompute()
26 | {
27 | // the currently growing clique;
28 | var R = new List();
29 | // prospective nodes which are connected to all nodes in R
30 | // and using which R can be expanded
31 | var P = new List();
32 | // nodes already processed i.e. nodes which were previously in P
33 | // and hence all maximal cliques containing them have already been reported
34 | var X = new List();
35 |
36 | // An important invariant is that all nodes which are connected to every node
37 | // of R are either in P or X.
38 |
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/Sandwych.QuickGraph.Core/Algorithms/Cliques/MaximumCliqueAlgorithmBase.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using QuickGraph.Algorithms.Services;
6 |
7 | namespace QuickGraph.Algorithms.Cliques
8 | {
9 | public abstract class MaximumCliqueAlgorithmBase
10 | : AlgorithmBase>
11 | where TEdge : IEdge
12 | {
13 | protected MaximumCliqueAlgorithmBase(IAlgorithmComponent host, IUndirectedGraph visitedGraph)
14 | : base(host, visitedGraph)
15 | {}
16 |
17 | protected MaximumCliqueAlgorithmBase(IUndirectedGraph visitedGraph)
18 | : base(visitedGraph)
19 | {}
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/Sandwych.QuickGraph.Core/Algorithms/Cliques/ncliques.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oldrev/Sandwych.QuickGraph/46fc1f64f09f9906e48729469c5dc22596066b01/src/Sandwych.QuickGraph.Core/Algorithms/Cliques/ncliques.pdf
--------------------------------------------------------------------------------
/src/Sandwych.QuickGraph.Core/Algorithms/ComputationState.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace QuickGraph.Algorithms
4 | {
5 | ///
6 | /// The computation state of a graph algorithm
7 | ///
8 | #if !SILVERLIGHT
9 | [Serializable]
10 | #endif
11 | public enum ComputationState
12 | {
13 | ///
14 | /// The algorithm is not running
15 | ///
16 | NotRunning,
17 | ///
18 | /// The algorithm is running
19 | ///
20 | Running,
21 | ///
22 | /// An abort has been requested. The algorithm is still running and will cancel as soon as it checks
23 | /// the cancelation state
24 | ///
25 | PendingAbortion,
26 | ///
27 | /// The computation is finished succesfully.
28 | ///
29 | Finished,
30 | ///
31 | /// The computation was aborted
32 | ///
33 | Aborted
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/Sandwych.QuickGraph.Core/Algorithms/Condensation/CondensedEdge.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using QuickGraph.Collections;
4 |
5 | namespace QuickGraph.Algorithms.Condensation
6 | {
7 | #if !SILVERLIGHT
8 | [Serializable]
9 | #endif
10 | public sealed class CondensedEdge : Edge
11 | where TEdge : IEdge
12 | where TGraph : IMutableVertexAndEdgeSet, new()
13 | {
14 | private List edges = new List();
15 | public CondensedEdge(TGraph source, TGraph target)
16 | :base(source,target)
17 | { }
18 |
19 | public IList Edges
20 | {
21 | get { return this.edges; }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/Sandwych.QuickGraph.Core/Algorithms/Condensation/MergedEdge.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using QuickGraph.Collections;
4 |
5 | namespace QuickGraph.Algorithms.Condensation
6 | {
7 | #if !SILVERLIGHT
8 | [Serializable]
9 | #endif
10 | public sealed class MergedEdge : Edge
11 | where TEdge : IEdge
12 | {
13 | private List edges = new List();
14 |
15 | public MergedEdge(TVertex source, TVertex target)
16 | :base(source,target)
17 | { }
18 |
19 | public IList Edges
20 | {
21 | get { return this.edges; }
22 | }
23 |
24 | public static MergedEdge Merge(
25 | MergedEdge inEdge,
26 | MergedEdge outEdge
27 | )
28 | {
29 | MergedEdge newEdge = new MergedEdge(
30 | inEdge.Source, outEdge.Target);
31 | newEdge.edges = new List(inEdge.Edges.Count + outEdge.Edges.Count);
32 | newEdge.edges.AddRange(inEdge.Edges);
33 | newEdge.edges.AddRange(outEdge.edges);
34 |
35 | return newEdge;
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/Sandwych.QuickGraph.Core/Algorithms/Contracts/IAlgorithmContract.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Diagnostics.Contracts;
6 |
7 | namespace QuickGraph.Algorithms.Contracts
8 | {
9 | [ContractClassFor(typeof(IAlgorithm<>))]
10 | abstract class IAlgorithmContract
11 | : IAlgorithm
12 | {
13 | #region IAlgorithm Members
14 |
15 | TGraph IAlgorithm.VisitedGraph
16 | {
17 | get
18 | {
19 | Contract.Ensures(Contract.Result() != null);
20 |
21 | return default(TGraph);
22 | }
23 | }
24 |
25 | #endregion
26 |
27 | #region IComputation Members
28 |
29 | object IComputation.SyncRoot
30 | {
31 | get { throw new NotImplementedException(); }
32 | }
33 |
34 | ComputationState IComputation.State
35 | {
36 | get { throw new NotImplementedException(); }
37 | }
38 |
39 | void IComputation.Compute()
40 | {
41 | throw new NotImplementedException();
42 | }
43 |
44 | void IComputation.Abort()
45 | {
46 | throw new NotImplementedException();
47 | }
48 |
49 | event EventHandler IComputation.StateChanged
50 | {
51 | add { throw new NotImplementedException(); }
52 | remove { throw new NotImplementedException(); }
53 | }
54 |
55 | event EventHandler IComputation.Started
56 | {
57 | add { throw new NotImplementedException(); }
58 | remove { throw new NotImplementedException(); }
59 | }
60 |
61 | event EventHandler IComputation.Finished
62 | {
63 | add { throw new NotImplementedException(); }
64 | remove { throw new NotImplementedException(); }
65 | }
66 |
67 | event EventHandler IComputation.Aborted
68 | {
69 | add { throw new NotImplementedException(); }
70 | remove { throw new NotImplementedException(); }
71 | }
72 |
73 | #endregion
74 | }
75 | }
--------------------------------------------------------------------------------
/src/Sandwych.QuickGraph.Core/Algorithms/Contracts/IComputationContract.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics.Contracts;
3 |
4 | namespace QuickGraph.Algorithms.Contracts
5 | {
6 | [ContractClassFor(typeof(IComputation))]
7 | abstract class IComputationContract
8 | : IComputation
9 | {
10 | #region IComputation Members
11 | object IComputation.SyncRoot
12 | {
13 | get
14 | {
15 | Contract.Ensures(Contract.Result