2010-06-24 22 views
5

derlemesi başvurulan bir uygulamayı analiz etmeye çalışıyorum yönelimli-asiklik bir grafik olmalıdır, ancak değil. Ayrıca, bir alt alt montajın farklı sürümlerini referans alan alt montajlar ile ilgili bir sorun var (think Escher...)Yönlendirilmiş döngüsel grafik için veri yapısı ve algoritmalar (F #)

Yapmak istediklerim, her bir montaj-alt montaj çiftini analiz etmek ve herhangi bir şeyin yanlış olduğu bir resim oluşturmaktır.

Bunun için iyi bir veri yapısı olacağına dair bir rehberliğe ihtiyacım var. Değişmez bir yapıya sahip olabileceğime emin değilim, ama içsel olarak değiştirilip sonra değiştirilemez hale geldiğine inanmıyorum.

Sorunun diğer kısmı, veri yapısını doldurmak için kullanmam gereken algoritmaları ve daha sonra da problemleri "analiz etmek" için kullanacağım algoritmalardır.

cevap

3

sadece NDepend kullanabilirsiniz, sizin meclisleri analiz eder ve bağımlılık döngüleri algılar: Vikipedi iyi bir genel bakış vardır.

Bunu gerçekten yapmak istiyorsanız, bağımlılık grafiklerini modellemek için QuickGraph kullanırım, topolojik sıralama gibi grafik algoritmalarını da içerir.

+0

sayesinde kod sadece 12 satır. Bağımlılıkları 'izleyen' bir ev yapımı sistemimiz var, ancak bu konu patentli değil. Amacım, çalışmadığı tüm yerleri bulmak. Yani ikinci önerin benim için daha faydalı görünüyor. – Benjol

2

İçinde içsel olarak değiştirilip sonra değiştirilemez hale getirilmiş olması umrumda değil.

Tümüyle değiştirilemeyen veri yapılarını daha kolay kullanmayı da bulabilirsiniz. Özellikle, bir grafiği, kaynak düğümlerden hedef düğüm kümelerine kadar Map olarak kolayca temsil edebilirsiniz. Topolojik sıralama için, bir hedef düğümün kaynak düğümlerine verimli bir şekilde erişmek istiyorsanız, grafiğinizi başka yöne doğru ilerletmek için başka bir Map ile artırmak isteyebilirsiniz.

Sadece F # Bu uygulamaya ve topolojik sıralama durum biraz aslında benim soru ima daha karmaşıktır, :-) ...

+0

Jon, Topolojik sıralama işlevine ihtiyacım var. Paylaşabileceğin bir şans var mı? –

+1

Burada bir makale yazdım: http://fsharpnews.blogspot.co.uk/2010/10/graph-algorithms-topological-sort-and.html –