SQLを使用して、最後の葉までツリー構造に従いたいと思います。 Tree = 1、Knot = 3、Tree = 1、Knot = NULL(累積確率)、Tree = 2、Knot = 4;ツリー= 2、ノット= 5、ツリー= 2、ノットはヌル(累積確率)。ツリー= 3、ノット= 6、ツリー= 3、ノットはヌル(累積確率)、ツリー= 4、ノットはヌル(累積確率)。ツリー= 5、結び目はヌル(累積確率)です。ツリー= 6、結び目はヌル(累積確率)です。ツリーの高さを求める
-1
A
答えて
0
次のようなデータを整理した場合、あなたは木、葉およびパスに関する詳細な情報を必要としない場合は、あなただけnodeval
には等しい値treenode
がないかどうか確認することができ、次の
with TREETAB as (
select '1' treenode, '2' nodeval from dual
union all
select '1' treenode, '3' nodeval from dual
union all
select '1' treenode, 'leaf1' nodeval from dual
union all
select '2' treenode, '4' nodeval from dual
union all
select '2' treenode, '5' nodeval from dual
union all
select '2' treenode, 'leaf2' nodeval from dual
union all
select '3' treenode, '4' nodeval from dual
union all
select '3' treenode, 'leaf3' nodeval from dual
union all
select '4' treenode, 'leaf4' nodeval from dual
union all
select '5' treenode, 'leaf5' nodeval from dual
union all
select '6' treenode, 'leaf6' nodeval from dual
)
select *
from (SELECT t.*, CONNECT_BY_ISLEAF Leaf,
SYS_CONNECT_BY_PATH(nodeval, '/') "Path", level
FROM TREETAB t
start with t.treenode = 1
CONNECT BY PRIOR t.nodeval = to_char(t.treenode))
where Leaf = 1
order by treenode;
を行うことができますこのように、あなたが話している確率を仮定し
with TREETAB as
(select '1' treenode, '2' nodeval
from dual
union all
select '1' treenode, '3' nodeval
from dual
union all
select '1' treenode, 'leaf1' nodeval
from dual
union all
select '2' treenode, '4' nodeval
from dual
union all
select '2' treenode, '5' nodeval
from dual
union all
select '2' treenode, 'leaf2' nodeval
from dual
union all
select '3' treenode, '4' nodeval
from dual
union all
select '3' treenode, 'leaf3' nodeval
from dual
union all
select '4' treenode, 'leaf4' nodeval
from dual
union all
select '5' treenode, 'leaf5' nodeval
from dual
union all
select '6' treenode, 'leaf6' nodeval from dual)
select *
from TREETAB t
where not exists
(select t.treenode from TREETAB t2 where t2.treenode = t.nodeval)
+0
申し訳ありませんが、ツリーの長さに依存しない上記のツリー条件であることがわかりません。使用されたデータはサンプル用です。 – Seyran
0
は、各ブランチの等しい確率です:
WITH data (tree, knot) AS (
SELECT 1, 2 FROM DUAL UNION ALL
SELECT 1, 3 FROM DUAL UNION ALL
SELECT 1, NULL FROM DUAL UNION ALL
SELECT 2, 4 FROM DUAL UNION ALL
SELECT 2, 5 FROM DUAL UNION ALL
SELECT 2, NULL FROM DUAL UNION ALL
SELECT 3, 6 FROM DUAL UNION ALL
SELECT 3, NULL FROM DUAL UNION ALL
SELECT 4, NULL FROM DUAL UNION ALL
SELECT 5, NULL FROM DUAL UNION ALL
SELECT 6, NULL FROM DUAL
),
probabilities (tree, knot, probability) AS (
SELECT tree, knot, 1/COUNT(1) OVER (PARTITION BY tree) FROM data
),
cumulative_probabilities (tree, knot, probability, path) AS (
SELECT p.*, '/' || tree
FROM probabilities p
WHERE tree = 1
UNION ALL
SELECT p.tree, p.knot, p.probability * cp.probability, cp.path || '/' || p.tree
FROM probabilities p
INNER JOIN
cumulative_probabilities cp
ON (p.tree = cp.knot)
)
SELECT *
FROM cumulative_Probabilities
WHERE knot IS NULL;
出力
:
TREE KNOT PROBABILITY PATH
---- ---- ----------- ------
1 0.333333333 /1
3 0.166666667 /1/3
2 0.111111111 /1/2
6 0.166666667 /1/3/6
4 0.111111111 /1/2/4
5 0.111111111 /1/2/5
関連する問題
- 1. ツリーの合計を求める
- 2. バイナリ検索ツリーの高さ
- 3. キャンバス内のベジエ曲線の高さを求める
- 4. AVLツリー高さメソッドStackOverFlow Erroe
- 5. 高いカバレッジを求めるプロジェクト
- 6. バイナリ検索ツリーの高さを取得
- 7. N値ツリーの最大平均スコアを求める
- 8. 高速バイナリ検索のための展開されたツリーとして展開されたツリー
- 9. バイナリ検索ツリーの平均高さ
- 10. ペアワイズユークリッド距離を求めるための高速アルゴリズム
- 11. SQL-DeveloperでテーブルのBツリーの高さを見つける
- 12. アセットパイプラインでツリーを要求する
- 13. Mavenのコンパイルエラー(より高いJDKバージョンを求める)
- 14. N階乗を分ける最高度を求める
- 15. bfsツリーのノードの高さを見つけよう
- 16. ユニオン配列の長さを求める
- 17. SWT空のテーブル/ツリーのカスタム行の高さ
- 18. Pythonの再帰的な任意のツリーの高さ
- 19. ツリーの高さを非再帰的に実装するための疑似コードとisBST
- 20. 指令のリンク関数に渡された要素の高さと幅をAngularjsで求める方法
- 21. 反復関係から再帰ツリーの高さを決定する方法は?
- 22. 列を埋めるための行の高さ - ブートストラップのレイアウト
- 23. c#dllの構造化に関する高度なガイダンスを求めよう
- 24. 高さdiv詰め物100%
- 25. ランダムフォレストチューニング - ツリーの深さとツリーの数
- 26. Qooxdoo:フォームにツリーを含める
- 27. SASS:セット高さのためのMIXIN
- 28. 高価な高さの計算を処理するためのベストプラクティス?
- 29. ionicアプリケーションは、より高いアンドロイドバージョンの許可を求めていません
- 30. n -aryツリー内で最高値を見つける
わからない、多分[階層クエリ](https://docs.oracle.com/cd/B28359_01/server.111/b28286/queries003.htm#SQLRF52315)を助けることができます君は。あなたがデータ組織の例、テーブル構造などを提供するならば、解決方法を理解しやすくなります。 – Seyran
「確率を取る」とはどういう意味ですか?どのような確率?どのように計算されますか? – mathguy
あなたの例では、確率はちょうど葉の値なので、私の答えの計算はうまくいきます。確率の本当の木を構築するならば、各ノードは確率も持っているはずです。@ MT0の答えは、各ノードに行く確率は等しく、定義された他の条件も正しくない場合。 – Seyran