Yaprak düğümlerinin "sayım" özelliği taşıyabileceği birçok düzeydeki bir ağacım var. Her alt ağaç için toplam sayımı hesaplamak ve her alt ağacın kök düğümündeki bu değerleri önbelleğe almak istiyorum. Gremlin'de bu mümkün mü?Gremlin'de alt ağaçların agregatları nasıl hesaplanır?
cevap
sideEffect
ile yapabilirdiniz - bu oldukça basittir. Biz kurulum ile basit ağacı:
gremlin> g.V().filter{it.outE().hasNext()}.sideEffect{
gremlin> c=0;
gremlin> it.as('a').out().sideEffect{leaf -> c+=(leaf.getProperty('count')?:0)}.loop('a'){true}.iterate()
gremlin> it.setProperty('total',c)
gremlin> }
==>v[0]
==>v[1]
gremlin> g.v(0).total
==>5
gremlin> g.v(1).total
==>3
Yani sorgu şu şekilde ayırır: Burada daha sonra
gremlin> g = new TinkerGraph()
==>tinkergraph[vertices:0 edges:0]
gremlin> v1 = g.addVertex()
==>v[0]
gremlin> v2 = g.addVertex()
==>v[1]
gremlin> v3 = g.addVertex([count:2])
==>v[2]
gremlin> v4 = g.addVertex([count:3])
==>v[3]
gremlin> v1.addEdge('child',v2)
==>e[4][0-child->1]
gremlin> v1.addEdge('child',v3)
==>e[5][0-child->2]
gremli
gremlin> v2.addEdge('child',v4)
==>e[6][1-child->3]
Ve tam ağacın içindeki her alt ağaç üzerinde hesaplama verilmiştir. İlk olarak, bu parça:
g.V().filter{it.outE().hasNext()}
bir yaprak düğümü değildir ağaç herhangi bir bölümünü alır (yani, bir yaprak vermeye için en az bir giden kenar olmalıdır). İkincisi, bir alt ağacının her kök işlemek için sideEffect
kullanın:
it.as('a').out().sideEffect{leaf -> c+=(leaf.getProperty('count')?:0)}.loop('a'){true}.iterate()
c
adında bir değişkende her alt ağacı için "saymak" özelliğinin toplamını depolamak. Orada bir "sayım" özelliği olmadan köşeleri kontrol etmek ve bu durumlarda bir sıfır döndürmek için elvis operatörü (?:
) ile biraz groovy iyilik var. Gremlin 2.x veya 3.x
it.setProperty('total',c)
>> c'nin değerini alt ağacın kök düğümünde saklayabilirsiniz << Nasıl? – isobretatel
' v1.setProperty ('total', c) '- daha fazlasına ihtiyacınız var mı? –
Evet: tüm ağaç için değil, _each_ alt ağacı için bu değerleri hesaplayın ve önbelleğe alın. – isobretatel
- 1. Ağaçların yeniden yazılması
- 2. Paralelleştirilmiş C# Kodunun yüzdesi nasıl hesaplanır/hesaplanır
- 3. "En az kullanılan alt kuruluş" nedir ve nasıl hesaplanır?
- 4. Tıklama oranı nasıl hesaplanır
- 5. DataGridView.Rows.Height nasıl hesaplanır?
- 6. PCA'da centroid nasıl hesaplanır?
- 7. Croston yöntemi nasıl hesaplanır
- 8. Tüm ikili ağaçların inorder geçişinden yazdırılması
- 9. Python'da gelecek Cuma nasıl hesaplanır?
- 10. Python'da otomatik kovaryans nasıl hesaplanır
- 11. Python'da mod b nasıl hesaplanır?
- 12. Java ME'de logaritma nasıl hesaplanır?
- 13. Hareketli Standart Sapma Nasıl Hesaplanır
- 14. Oylama algoritması: sıralama nasıl hesaplanır?
- 15. Selenium IDE: Değişkenler Nasıl Hesaplanır
- 16. GLSL içinde gl_FragCoord nasıl hesaplanır
- 17. Bir noktanın enlemi nasıl hesaplanır?
- 18. İki gruptaki değerler nasıl hesaplanır
- 19. Lojistik regresyonun ağırlıkları nasıl hesaplanır?
- 20. Functor'ın dönüş değeri nasıl hesaplanır?
- 21. Ağaç boyamanın yolları nasıl hesaplanır?
- 22. % 95 CI, R'de confint kullanılarak nasıl hesaplanır?
- 23. Gerçek sayının ters faktörü nasıl hesaplanır?
- 24. Postgre'lerde üstel hareketli ortalama nasıl hesaplanır?
- 25. Rm t'si paketi ile okunabilirlik nasıl hesaplanır
- 26. Farklı satırlardaki veriler arasındaki fark nasıl hesaplanır?
- 27. SSRS Pasta Grafiği nasıl hesaplanır ve sayılır
- 28. Görev Yöneticisi olarak bellek kullanımı nasıl hesaplanır?
- 29. Java'da büyük sayılar nasıl hesaplanır ve görüntülenir
- 30. Scikit-learn: True Negative nasıl hesaplanır
hangi sürümü: Hesaplamak ağaç travers sonra
c
sadece aracılığıyla altağacın kök düğümündec
değerini saklayabilir? –Gremlin 2.x tercih edilebilir. – isobretatel