SORU
16 Mart 2012, Cuma


Nasıl Haskell bir grafik temsil ediyorsunuz?

Yeterince kolay haskell, bir ağaç ya da liste cebirsel veri türleri kullanarak temsil eder. Ama nasıl typographically bir grafik temsil eden verirsiniz? İşaretçileri olması gerekir gibi görünüyor. Gibi bir şey olabilir diye tahmin ediyorum

type Nodetag = String
type Neighbours = [Nodetag]
data Node a = Node a Nodetag Neighbours

Ve çalışılabilir olacaktır. Ancak sanki biraz ayrılmış; bağlantıları arasında farklı doku yapısı yok gerçekten "hissediyorum" gibi sağlam bağlantılar arasındaki mevcut önceki ve sonraki öğeleri bir liste, ya da ebeveynler ve çocuklar bir düğüm, bir ağaç. Biraz yönlendirme düzeyini etiket sistemi aracılığıyla sunulan mani olur diye tanımlanan grafik üzerinde cebirsel manipülasyonlar yapıyor çıkardı.

Öncelikle şüphe duygusu ve bana bu soruyu sormak için neden inelegance algısı. Haskell, grafikler tanımlamak için daha iyi/daha matematiksel olarak zarif bir yolu var mı? Ya birşey sabit/temel tökezledi miyim? Özyinelemeli veri yapıları tatlı, ama bu başka bir şey gibi görünüyor. Ağaçlar ve listeler kendi başvuru nasıl farklı bir anlamda kendini atilacak bir veri yapısı. Listeler ve ağaç türü düzeyinde kendini atilacak gibi ama grafikler değer düzeyde öz atilacak.

Gerçekten neler oluyor?

CEVAP
16 Mart 2012, Cuma


Shang cevabı bir grafik tembellik kullanarak temsil etmek için nasıl görebilirsiniz. Bu beyan sorunu, değiştirmek için çok zor olmasıdır. Düğüm-ipe hile eğer bir grafik bir kez oluşturmak için gidiyoruz eğer sadece yararlıdır, ve sonra hiçbir şey değişmez.

Uygulamada, aslında isteyeyimyapınbenim grafik ile bir şey, daha fazla yaya beyan kullanıyorum:

  • Edge listesi
  • Bitişiklik listesi
  • Her düğüm için benzersiz bir etiket vermek, bir işaretçi yerine etiket kullanmak, ve düğümlere etiketlerinden sonlu bir harita bulundurun

Eğer ya da grafik sık sık değişen düzenleme olacaksın, bir temsil Huet. fermuar dayalı kullanmanızı tavsiye ederiz. Bu gösterimi dahili kontrol akış grafikleri için DZD kullanılır. Bu konuda buradan okuyabilirsiniz:

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CNET

    CNET

    5 Mayıs 2006
  • CZTUTORIALS

    CZTUTORIALS

    28 Ocak 2011
  • SegaAmerica

    SegaAmerica

    5 Mart 2008