Skip to main content
QUICK REVIEW

[論文レビュー] Dijkstra Graphs

Lucila M. S. Bento, Davidson R. Boccardo|arXiv (Cornell University)|Feb 28, 2016
Graph Theory and Algorithms被引用数 5
ひとこと要約

本稿では、Dijkstraの原則に従って構造化プログラムをモデル化するDijkstraグラフ—というグラフのクラスを導入し、与えられたグラフがこのクラスに属するかどうかを特定するO(n)時間の効率的アルゴリズムを提示する。さらに、Dijkstraグラフ同士の同型性を判定する線形時間アルゴリズムを提案し、コード類似度解析やプログラム構造の検証に応用可能である。

ABSTRACT

We revisit a concept that has been central in some early stages of computer science, that of structured programming: a set of rules that an algorithm must follow in order to acquire a structure that is desirable in many aspects. While much has been written about structured programming, an important issue has been left unanswered: given an arbitrary, compiled program, describe an algorithm to decide whether or not it is structured, that is, whether it conforms to the stated principles of structured programming. We refer to the classical concept of structured programming, as described by Dijkstra. By employing a graph model and graph-theoretic techniques, we formulate an efficient algorithm for answering this question. To do so, we first introduce the class of graphs which correspond to structured programs, which we call Dijkstra Graphs. Our problem then becomes the recognition of such graphs, for which we present a greedy $O(n)$-time algorithm. Furthermore, we describe an isomorphism algorithm for Dijkstra graphs, whose complexity is also linear in the number of vertices of the graph. Both the recognition and isomorphism algorithms have potential important applications, such as in code similarity analysis.

研究の動機と目的

  • Dijkstraの原則に基づき、構造化プログラミングの概念をグラフ理論的性質として形式化すること。
  • 任意のコンパイル済みプログラムの制御フローダイアグラムが、構造化されている、すなわちDijkstraグラフのクラスに属するかどうかを判定するアルゴリズムを開発すること。
  • プログラム類似度検出を支援するために、Dijkstraグラフの効率的な同型性アルゴリズムを設計すること。
  • ソフトウェア工学におけるプログラム構造および等価性の自動解析の基盤を確立すること。

提案手法

  • Dijkstraのルールに従って構造化プログラムに対応する特定の有向グラフクラスとしてDijkstraグラフを定義する。
  • グラフ分解に基づく貪欲アルゴリズムを用いて、与えられたグラフがDijkstraグラフであるかをO(n)時間で識別する。
  • Dijkstraグラフの構造的性質を活用し、2つのDijkstraグラフ間の線形時間同型性アルゴリズムを設計する。
  • 深さ優先探索やコンポONENT分解を含むグラフ理論的手法を適用し、正しさと効率性を保証する。
  • 認識および同型性アルゴリズムの両方が、頂点数に比例する時間計算量で最適であることを保証する。

実験結果

リサーチクエスチョン

  • RQ1与えられた制御フローダイアグラムが、Dijkstraが定義する構造化プログラムに対応するかどうかをアルゴリズム的に判定できるか?
  • RQ2グラフが構造化プログラムを表すために必要な十分なグラフ理論的条件は何か?
  • RQ3Dijkstraグラフを認識する線形時間アルゴリズムは存在するか? また、そのアルゴリズムは同型性のテストに拡張可能か?
  • RQ4Dijkstraグラフの認識および同型性判定は、自動コード類似度解析にどのように活用できるか?

主な発見

  • 本稿では、Dijkstraグラフを構造化プログラミングの本質を捉える形式的グラフクラスとして成功裏に定式化した。
  • 頂点数nを用いてO(n)時間の貪欲アルゴリズムを提示し、与えられたグラフがDijkstraグラフに属するかを識別可能である。
  • Dijkstraグラフのための線形時間同型性アルゴリズムが開発され、プログラム構造の効率的比較が可能になった。
  • 認識および同型性アルゴリズムは時間計算量において最適であり、実世界のプログラム解析タスクに応用可能である。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。