ITの基礎知識|ITパスポート・基本情報

【応用情報技術者試験】の記事一覧

形式言語

2017.09.19

この記事での学習内容 基本情報 応用情報

形式言語とは何か、言語の定義、演算、種類、文法を理解する。また、BNF、構文図式などの表記法、正規表現、文脈自由文法を理解する。

用語例: 逆ポーランド表記法

自然言語と形式言語

日本語や英語などの言語は人間が暮らしていく中で自然に発生したため、必ずしも厳密な文法に従っているとは限りません。こういった言語を自然言語といいます。

それに対し、特定の目的のために作られ、厳格な文法に則った言語を形式言語といいます。
コンピュータに指示を与えるためには、プログラミング言語と呼ばれる言語を用いたプログラムを作成します。
このプログラミング言語も形式言語の一つです。

文脈自由文法

言語に関するルールを定めたものが『文法』で、制限の強さの異なる4つの分類があります。ここでいう文法は文の形式を定めるだけで意味についての解釈は行いません。

  • 句構造文法
  • 文脈依存文法
  • 文脈自由文法
  • 正規文法

句構造文法が制限が最も弱く、正規文法が最も制限が強い文法です。形式言語では、文脈自由文法が用いられます。

文脈自由文法は、プログラミング言語を正確に記述するための厳密な形式を定めることが出来る文法です。

例えば、文脈自由文法で『直角とは90度である』と定義する場合、定義が必要なもの(この場合は「直角」)を「非終端記号」といい、それ以上他のものに置き換えることが出来ずに定義が必要でないもの(この場合は「90度」)を「終端記号」といいます。

BNF記法(バッカス・ナウア記法)

BNF(Backus-Naur Form)は、文脈自由文法の文法自体を定義するための記法で、一般的には、バッカス・ナウア記法と呼びます。
プログラミング言語 algol60の文法定義に初めて用いられた記法です。

記号意味
<変数名><非終端記号>(=メタ変数名)
::=左辺が右辺に分解できることを表す。(○○とは▲▲であるの部分を表す)
「または」を表す

メタ変数名

非終端記号のことを「メタ変数名」と呼ぶこともあります。「メタ」というキーワードは情報処理の分野ではよくつかわれるキーワードで、「メタ情報」「メタデータ」という使われ方をします。意味としては、「情報のための情報」「そのデータが持つ、データ自身についての抽象度の高い付加的データ」という意味でつかわれます。

現在では、ヴィルド博士がBNFを拡張して作成したEBNF(拡張バッカス・ナウア記法)も一般的です。
BNFとEBNFの相違は、EBNFでは繰り返し部分を中かっこで囲んだり、終端記号をダブルクォーテーションやシングルクォーテーションで囲んだり、といった違いがあります。

例:

  • <a> ::= <b>  aはbである。
  • <a> ::= 1|2  aは1または2である。

例2(数値の表現をBNF記法で表した例)

  • <数値>::= <数字列>|<符号><数字列>|<数字列>.<数字列>
  • <数字列>::=<数字>|<数字列><数字>
  • <数字>::=0|1|2|3|4|5|6|7|8|9
  • <符号>::= +|-

この例の<数字列>の定義のように、自身の定義の中で自らを定義するような書き方が、情報処理の分野ではよく用いられます。このような定義の仕方を「再帰(的)」と呼びます。

構文図式

構文図式は、BNFで定義した文法の構造、「構文」を視覚的に表現する方法の一つです。

以下に、BNFのと構文図式の例を示します。

<算術式>のBNF表記

  • <算術式>::=<項>|<加減演算子><項>
  • <加減演算子>::= +|-

なお、点線で囲っている部分は0回以上の繰り返しを表します。

正規表現

正規表現とは、いくつかの文字をパターン化して一つの形式で表現する表記法です。BNFを記述するときにも使われます。

正規表現を用いることで、個別の文字列を指定しなくても、また表記にゆれがあっても検索することが可能です。

例えば、以下のようなケースで正規表現を用いて、文字列を検索します。

  • 数値のみで構成されている任意の文字列を検索したい
  • 「ユーザ」と「ユーザー」といった、調音の有無を無視して検索したい

例)メールアドレスの表記ルールを正規表現で表す

正規表現: [\w\d_-]+@[\w\d_-]+\.[\w\d\._-]+

正規表現で用いられる記号の例

  • \w 半角英字(a~z、A~Z)
  • \d 半角数字(0~9)
  • \. 半角ピリオド
  • _ 半角アンダースコア
  • - 半角ハイフン
  • [\w\d_-] []内のいずれか1文字
  • + 直前の正規表現の1回以上の繰り返し
  • . 任意の1文字
  • * 直前の正規表現の0回以上の繰り返し

逆ポーランド記法

演算方法の表記法の一つに「逆ポーランド記法(Reverse Polish Notation : RPN)」があります。
数式を記述する際、演算子を演算対象の後ろに置く方法です。

逆ポーランド記法はコンピュータと相性の良い数式の書き方です。なぜなら、コンピュータは人間と違って与えられた情報を俯瞰的に眺めることは苦手であり、基本的には「右から来た情報を左に受け流す」というのがコンピュータの情報の扱い方なので、逆ポーランド記法のように、情報を流れてきた順序に沿って処理できる方法と相性が良いからです。
また、コンピュータが持つ「スタック」というデータの管理機構で数式を処理しやすい、という面もあります。

スタックは「積み重ねる」という意味で、最後に入れたものを最初に取り出すデータ構造です。

実際に、逆ポーランド記法で書かれた、「135×82÷++」という計算式を、スタックを用いて計算してみましょう。
基本的な動作は、以下の2つです。

  • 数値が来たら、スタックに投入する。
  • + や – などの演算子が来たら、スタックから数値を2個取り出して計算し、その結果をスタックに投入する。

 

述語論理

2017.09.19
この記事での学習内容 基本情報 応用情報述語論理の考え方、演繹推論と帰納推論の違いを理解する。用語例: 関係データベース述語論理述語論理とは、命題の内部の構造を主語と述語の二つの構成要素に分解し、その中の術後部分を扱う理論です。命題文章や式で表された事象について、それが真であるか偽であるかが明確に決まるもの。命題論理審議の解っている既存の命題をつなげて新しい命題を作...

Read more...

文字の表現

2017.09.14
この記事での学習内容 ITパスポート 基本情報 応用情報代表的な文字コードを理解する。用語例: ASCIIコード、EUC(Extended UNIX Code)、JISコード、シフトJISコード、Unicode、UCS文字コードアルファベットやかな、漢字といった文字データを扱うために、コンピュータ内部ではそれぞれの文字に、0と1からなるコード番号を割り当てています。これを文字コード...

Read more...

符号理論

2017.09.14
この記事での学習内容 ITパスポート 基本情報 応用情報アナログとデジタルの特徴、量子化、標本化、A/D変換などの符号化、符号化の目的、情報伝送における信頼性、効率性、安全性の向上などの効果を理解する。用語例:通信路符号化、ハフマン符号、データ圧縮符号化理論符号化とは、データを数値に変換し、情報量として表現することで、コード化ともいいます。符号化理論とは、情報を符号化し、伝送を...

Read more...

情報理論

2017.09.14
この記事での学習内容 ITパスポート 基本情報 応用情報情報量の概念、事象の生起確率と情報量との関係を理解する。情報理論情報理論とは、ある事象における確率や統計を元に、情報の量を数学的に定義する理論です。 生起確率: ある事象 E が起こる確率。 P(E) 情報量:  事象が起こる確率を P(E) とする時、事象が起こったことを知らされた時に得られる(選択できる)情報の量。...

Read more...

情報処理技術者試験での学習内容【基本情報・応用情報】 情報理論、符号理論の考え方、仕組みを習得し、応用する。 コードによる文字の表現を習得し、応用する。 述語論理、形式言語、オートマトンなど、情報に関する理論の考え方、仕組みを習得し、応用する。 正当性理論の考え方、仕組みを習得し、応用する。【応用情報】 AI(人工知能)の考え方、仕組みを習得し、応用する。 コンパイ...

Read more...

最適化問題

2017.09.12
この記事での学習内容 基本情報 応用情報最適化問題とは何か、線形計画法、PERT、最短経路問題などの考え方を理解する。用語例: 動的計画法最適化問題制約のある中で、目的とする関数(目的関数)の解が最大(あるいは最小)となる値を求める問題を最適化問題といいます。目的関数や制約関数によって幾つかの種類にわけられます。線形計画法(LP法)目的関数と制約関数が一次式(直線)で表...

Read more...

待ち行列理論

2017.09.12
この記事での学習内容 ITパスポート 基本情報 応用情報待ち行列理論の構成要素、考え方、M/M/1モデルにおける計算、乱数を利用したシミュレーションを理解する。用語例: サービス時間、到着間隔、平均到着率、平均サービス率待ち行列モデル我々の生活の中では、銀行のATMや行政の窓口、商店のレジなど色々なところで行列が作られています。この待たされる行列のことを待ち行列と呼びます。この顧客...

Read more...

グラフ理論

2017.09.12
この記事での学習内容 基本情報 応用情報グラフ理論の基本的な概念とその応用を理解する。用語例: 無向グラフ、有向グラフ、完全グラフ、重み付きグラフグラフ理論点と点を結ぶ集合であるグラフの性質についての理論をグラフ理論といいます。(ここでいうグラフは、一般的な「グラフ」とは別物)グラフとは、いくつかの接点(ノード)と呼ばれる点があり、それをある規則に基づいて結んだ線(枝:ブランチ...

Read more...

数式処理

2017.09.11
この記事での学習内容 基本情報 応用情報コンピュータを用いて、数式を記号的に代数処理する数式処理システムとそのアルゴリズムを理解する。用語例: 因数分解、微分、積分「数式処理」とは、数値の代わりに文字列を用いて計算式を記号的に処理することです。数値の代わりに用いる文字列を「代数」と呼びます。具体的な例としては、計算式を分解して積の形に変換する「因数分解」、時間とともに変化する関...

Read more...