研究課題/領域番号 |
18K11250
|
研究機関 | 南山大学 |
研究代表者 |
横山 哲郎 南山大学, 理工学部, 准教授 (80456631)
|
研究期間 (年度) |
2018-04-01 – 2022-03-31
|
キーワード | 可逆アルゴリズム / 可逆プログラミング言語 / 可逆シミュレーション / 可逆計算 |
研究実績の概要 |
近年、消費エネルギー最適化やプログラムのモジュラリティの向上を目的として、計算の全ステップにおいて直前の状態が一意に決まる可逆計算の研究が実施されてきた。本研究は、効率的な可逆アルゴリズム族の設計、その系統的な設計のための可逆アルゴリズム戦略の発展、および可逆プログラミング言語による実装を目指している。 本年度は、約30年前から知られている問題である前順走査と中順走査から二分木を効率的に構成する反復的および再帰的アルゴリズムの構築を通じて可逆アルゴリズムの知見を深めた。再帰的なアルゴリズムを記述するために可逆的なwhile言語に対して拡張を行って実装したものを研究に用いた。昨年度においても二分木に関する基本的な可逆アルゴリズムが得られており、プログラム逆変換の手法や類似する可逆化手法が応用可能であることを一定程度示した。 また、可逆線形探索および可逆二分探索といった基本的なアルゴリズムについても解析を行った。意外なことに対応する非可逆なアルゴリズムで変えても効率に影響の出ない出力データの種類やデータ構造を変えることで可逆アルゴリズムの効率は変化した。より効率的な可逆アルゴリズム設計のための出力データの種類やデータ構造を選定することが重要であり、そうした効率化を例を通して実践した。 さらに、可逆アルゴリズムを記述する可逆プログラミング言語の意味を定める形式意味論自体の可逆性の保証に関する研究を行った。メタレベルで可逆性をもつ言語の設計を実践してこの方法論の有効性を確かめた。 このように本年度は可逆アルゴリズム、可逆アルゴリズムを記述するために可逆プログラミング言語の設計と実装、および可逆プログラミング言語を設計する方法論について研究を行った。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
提案済みの基本的可逆アルゴリズムの効率化手法の応用を行って新たな可逆アルゴリズムの整備が進んだ。当初に計画したアルゴリズムとは異なるものが対象となったが、アルゴリズムの種類は無数にあるので分類が容易で可逆的に扱いが容易で非可逆なアルゴリズムの知見とは異なる知見が必要なものを優先して対象にしてきている。すでに整理された最適法がどの程度効率化に用いることができるかを、まず具体例を示し、次に適用可能な問題群を可逆化する一般解法を示すという当初掲げた方針が適用されている。可逆アルゴリズムの効率が大きく影響を受ける指標を定めて分類を行ってきている。各分類で効率の良い基本的な可逆アルゴリズムの事例の蓄積が行われている。 逆プログラムがある問題の効率的な可逆化については、プログラム逆変換の研究成果があるアルゴリズムを対象とすることで可逆アルゴリズム特有の整備を進められた。今回も逆プログラムがある問題については効率的な線形時間クリーン可逆化を行うことができた。一般にはクリーン可逆化が線形時間でできるかは未解決問題であるので少なくとも現時点では自明ではない問題を解いたといえる。 可逆プログラミング言語の拡張としては手続き型プログラミング言語whileを対象に行えた。アルゴリズムの研究をする上でプログラミング言語で実際にプログラムをしてその挙動を確かめられるのは強みである。可逆プログラミング言語の拡張は継続して行う。また、拡張したプログラミング言語の実装もオンラインで公開した。 令和1年度から可逆プログラミング言語の設計を支援するための形式意味論の研究を実施したが、これは可逆プログラミング言語の意味を定めたり拡張をしたりする際に有効である。
|
今後の研究の推進方策 |
平成30年度に記載した「今後の研究の推進方策」の具体的内容に沿って研究を進めている。以下のような内容を継続したい。木に関するアルゴリズムを含む基本的なデータ構造を対象としていく。当初想定していなかった可逆アルゴリズム特有の問題点はなるべく単純なデータ構造やアルゴリズムで示した方が良いためである。したがってむしろリストや配列などの単純なデータ構造も対象とした可逆アルゴリズムによってアイデアを示したい。必要に応じて言語及び言語処理系の拡張を行うことを継続する。 基本的で重要なアルゴリズムでも様々な指標についてそれぞれ効率的な可逆版が見つかっていないものが少なくない。いくつかの探索問題のクリーン可逆シミュレーションでメモリ使用量のオーバーヘッドを無くすことが可能では無いかと考えている。この方法を模索する。 プログラミング言語の種類によってアルゴリズムの記述方法や効率的なアルゴリズムは影響を受けることがある。これまで手続き型の高水準プログラミング言語での可逆アルゴリズム記述を多く行ってきた。関数型や低水準プログラミング言語を用いた可逆アルゴリズムの記述方法の研究は余力があれば行いたい。 可逆アルゴリズムの系統化は事例を積み重ねることで一般化を目指したい。また、可逆なメタ言語の適用事例について研究をすすめて、具体的な可逆プログラミング言語の設計に役立てたい。一般解法として知られている可逆シミュレーションを単に適用するよりも、個別のアルゴリズムの知識を用いて大幅に最適化できるものを見つけていきたい。さらに、可逆なアルゴリズム戦略の拡張やその種類の充実に取り組む。
|
次年度使用額が生じた理由 |
当初予定していた学会が開催されなく、関係する費用が不要になった。
|