頂点次数計算機
辺のリストを貼り付けると、各頂点の次数が分かります。A→B、B→C、C→Aの三角形では、どの頂点も入次数1、出次数1、次数2で、次数の合計6は3本の辺の2倍です。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
頂点の次数は、グラフ理論の問題を開いたとき、依存関係の有向グラフを描くとき、ソーシャルネットワークのスナップショットを監査するときに、最初に求める量です。この頂点次数計算機は辺リストを受け取り、出現する各頂点の入次数と出次数を集計し、有向グラフではその和を総次数として報告し、すべての次数の和が辺数の2倍になるという古典的な握手補題を検証します。有向モードでは各行を始点から終点への弧として扱い、無向モードでは各行を双方向の接続として扱い、自己ループは通常の+2規約で数えます。
辺リストにおける次数・入次数・出次数の意味
グラフ理論において頂点の次数とは、その頂点に触れる辺の端点の数です。有向グラフ—ダイグラフとも呼ばれます—では、各辺は尾から頭への順序対です。頂点の出次数はそこから出る辺の数、入次数はそこに入る辺の数、総次数は入次数と出次数の和です。
無向グラフでは各辺は順序のない対であり、頂点は入射端の数に等しい単一の次数を持ち、教科書では無向の場合を同じ記法に埋め込むとき入次数=出次数=その共通次数と書くことがよくあります。自己ループは重要です。 ダイグラフではループは入次数に1、出次数に1を寄与し、無向グラフではループの両端が同じ頂点にあるため次数に2を寄与します。
多重辺は許されます。 AからBへの平行な弧が2本あれば両方とも数えます。辺リストに一度も現れない頂点は出力に含まれず、少なくとも1本の辺に関与する頂点だけが報告されます。
入力契約、応答の形、握手補題の検証
edges は from と to を持つオブジェクトの配列です(ハンドラは尾の別名 source または u、頭の別名 target または v も受け付けます)。頂点ラベルは文字列または有限数でよく、トリム済み文字列に正規化されます。任意の directed フラグは既定で true です。
directed が true のとき各行は有向弧で、出次数は from で増え、入次数は to で増え、次数はその和です。directed が false のとき各行は無向で、両端点の次数が1増え(自己ループは2)、入次数と出次数は次数に等しく設定され、両モードで同じ応答形になります。
握手補題—handshaking lemma とも呼ばれます—は、すべての頂点次数の和が辺数の2倍である、と述べます。ダイグラフでは同じ走査により入次数の和と出次数の和がそれぞれ辺数に等しくなることも従い、応答はそれらを返すので、1回の呼び出しで三つの恒等式を主張できます。空の辺リストは有効で、握手が真のまま頂点ゼロを返します。
要求あたり最大五千辺まで受け入れ、ブラウザとワーカーの経路を有界に保ちます。
頂点次数計算機が役立つ場面
教室やチュータリング基盤は、任意の宿題グラフについて入次数・出次数の表を手計算の多重辺ミスなしに確認できるよう、頂点次数計算機を使います。試験ジェネレータと LMS 自動採点は、次数の和が辺数の2倍のとき握手補題を真と付け、不正な辺行を黙って頂点を捏造せず拒否する決定的オラクルを必要とします。
パッケージ依存関係、呼び出しグラフ、マイクロサービス通信をモデル化するソフトウェア技術者は、しばしば次数分布から始めます。どのサービスが高出次数のファンアウトを持つか、どのシンクが高入次数か、データエクスポートが握手の恒等式を壊していないかです。ネットワーク分析とソーシャルグラフのノートブックは、より高コストな中心性スコアの前に同じ集計を使います。
検証失敗は残高を消費しません。辺リストをコンパクトに保ち、テストで順序付き vertices 配列を固定すれば、初回の接続監査のために巨大なグラフライブラリを立てなくても再現可能な次数表が得られます。
活用例
宿題・試験の次数表
有向または無向の辺リストを貼り付け、各頂点の入次数・出次数・次数を教科書の解答と照合し、握手の和も確認します。
LMS・採点オラクル
次数の和が辺数の2倍であることと空の頂点ラベルを拒否することを決定的に検査し、グラフ理論の設問を採点します。
依存関係と通信ファンアウトの監査
エクスポートした辺リストからサービスやパッケージの入出次数を集計し、その後オフラインで中心性や閉路検出を行います。
よくある質問
辺リストから入次数と出次数をどう求めますか?
edges を [{from, to}, ...]として送ってください。 directed true(既定)では、出次数は頂点が from の行を、入次数は to の行を数え、次数はその和です。
握手補題とは何ですか?
handshaking lemma は、すべての頂点次数の和が辺数の2倍であると述べます。
無向グラフと自己ループはどう数えますか?
directed を false にしてください。各無向辺は両端の次数に1を加え、自己ループは2を加えます。入次数と出次数は次数と等しく設定され、応答形が統一されます。
孤立頂点は含まれますか?
いいえ。 少なくとも1本の辺の端点として現れる頂点だけが列挙されます。孤立点は辺リストに触れないため、握手の和に影響しません。
同じ2つの頂点を結ぶ辺が重複すると2回数えますか?
はい。重複した辺も使えるので、AからBへの2本の辺はそれぞれ、Aの出次数とBの入次数を1ずつ増やします。勝手にまとめたり削除したりはしません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/graph-degree \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"edges":[{"from":"A","to":"B"},{"from":"B","to":"C"},{"from":"C","to":"A"}]}'const res = await fetch("https://api.kit.forhosting.com/dev/graph-degree", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"edges": [
{
"from": "A",
"to": "B"
},
{
"from": "B",
"to": "C"
},
{
"from": "C",
"to": "A"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/graph-degree",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"edges": [
{
"from": "A",
"to": "B"
},
{
"from": "B",
"to": "C"
},
{
"from": "C",
"to": "A"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/graph-degree", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"edges":[{"from":"A","to":"B"},{"from":"B","to":"C"},{"from":"C","to":"A"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"edges":[{"from":"A","to":"B"},{"from":"B","to":"C"},{"from":"C","to":"A"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/graph-degree", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"edges": [
{
"from": "A",
"to": "B"
},
{
"from": "B",
"to": "C"
},
{
"from": "C",
"to": "A"
}
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.graph_degree",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
不正な辺行は invalid_input で失敗し、課金されません。
入力契約、応答の形、握手補題の検証
POST で edges を含む JSON 本体を送ってください。空ラベルやオブジェクトでない行はフィールド名付きの invalid_input で失敗します。成功時の本体には directed、edge_count、vertex_count、id・in_degree・out_degree・degree を持つ vertices 配列、集計の sum_in_degree・sum_out_degree・sum_degree、handshake_holds、handshake_expected(常に edge_count の2倍)、短い formula 文字列が含まれます。
頂点次数計算機が役立つ場面
頂点次数計算機で検索順位を狙うコンテンツサイトは、有料 API とバイト単位で一致する純粋ロジックの無料ブラウザツールから恩恵を受けます。実装は純粋な parse ティア A のため、成功した呼び出しは毎回公開の基本料金 $0.002 で、モデルトークンも外向きネットワークもありません。
技術的な質問
頂点次数計算機の料金は?
ブラウザツールは無料です。API 要求は成功した呼び出しごとに前払い KIT 残高から $0.002 です。不正入力は課金されません。