Система моделирования работы машины Тьюринга

Автор: Пользователь скрыл имя, 10 Мая 2013 в 00:46, курсовая работа

Краткое описание

В 1936 г. английский математик Алан Тьюринг опубликовал в трудах Лондонского математического общества статью «О вычислимых числах в приложении к проблеме разрешения», которая наравне с работами Поста и Черча лежит в основе современной теории алгоритмов. Тьюрингом в качестве математической модели для описания алгоритмов было предложено абстрактное вычислительное устройство, которое впоследствии было названо машина Тьюринга (МТ).

Файлы: 1 файл

Записка МТ!(печать!!).doc

— 760.00 Кб (Скачать)

           

            return semantic;

        }

 

private void Algorithm()

        {

            int k = 0;

            for (int i = 0; i < dataGridView1.ColumnCount; i++)

                for (int j = 0; j < dataGridView1.RowCount; j++)

                    if (dataGridView1[i, j].Value == null) { k++; }

            if (k == dataGridView1.RowCount * dataGridView1.ColumnCount) { DialogResult a = MessageBox.Show("Отсутствует алгоритм"); stop = true; semantic = false; }

       }

 

        private void OneStep()

        {

            try

            {

                string cell_tape;

                string cell_table;

                string itog;

                int j;

                int symbol;

 

       if (number_cell_tape == dataGridView2.ColumnCount) { PlusK(); }

       dataGridView1.ClearSelection;

       dataGridView2.ClearSelection();

cell_tape = dataGridView2[number_cell_tape, 0].Value.ToString();

dataGridView2[number_cell_tape, 0].Style.BackColor = Color.LightBlue;

                old_number = number_cell_tape;

                j = 0;

while (j < dataGridView1.ColumnCount && dataGridView1.Columns[j].HeaderText != cell_tape.ToString())

                {

                    j++;

 

                } symbol = j;

 

if (dataGridView1[symbol, sost].Value == null)

{

   timer1.Stop();

   DialogResult a = MessageBox.Show("Неописано правило перехода");

   dataGridView2[old_number, 0].Style.BackColor = Color.White;

   dataGridView1[symbol, sost].Style.BackColor = Color.Red;

   Refresh();

   Thread.Sleep(1000);

   dataGridView1[symbol, sost].Style.BackColor = Color.White;

   stop = true; semantic = false;

}

      else

          {

            try

         {

cell_table = dataGridView1[symbol, sost].Value.ToString();

dataGridView1[symbol, sost].Style.BackColor = Color.LightBlue;

old_symbol = symbol; old_sost = sost;

dataGridView2[number_cell_tape, 0].Value = cell_table[0];

itog = GetLenta();

Tras.Add(itog);

switch (cell_table[1])

{

case 'R': number_cell_tape++; break;

case 'L': number_cell_tape--; break;

case 'S': break;

case 'r': number_cell_tape++; break;

case 'l': number_cell_tape--; break;

case 's': break;

}

 

string sss = "";

for (int i = 2; i < cell_table.Length; i++)

sss += cell_table[i].ToString();

sost = int.Parse(sss) - 1;

if (dataGridView1.RowCount < sost + 1)

{

DialogResult a = MessageBox.Show("Нет такого состояния");

dataGridView2[old_number, 0].Style.BackColor = Color.White;

dataGridView1[old_symbol, old_sost].Style.BackColor = Color.Red;

Refresh();

Thread.Sleep(1000);

stop = true; semantic = false;

}

}

catch (Exception)

                    {

                        stop = true;

                        semantic = false;

                        button3.Enabled = false;

                        butStep.Enabled = false;

                        Start.Enabled = true;

                    }

                }

            }

catch (Exception)

{

DialogResult a = MessageBox.Show("Алгоритм не применим к входным данным!");

}

}

     

private void Visualize()

        {

dataGridView2[old_number, 0].Style.BackColor = Color.White;

dataGridView1[old_symbol, old_sost].Style.BackColor = Color.White;

        }

 

      

private void Start_Click(object sender, EventArgs e)

        {

            Semantic();

            NewStart();

           

            if (semantic == true)

            {

                if (radioAvto.Checked)

                {

                    Algorithm();

                    while (sost >= 0 && stop != true)

                    {

                        Visualize();

                        OneStep();

                    }

                    Visualize();

                    if (semantic)

                    {

DialogResult a = MessageBox.Show("Алгоритм закончил свою работу");

                    }

                }

                else if (radioZad.Checked)

                {

                    button3.Enabled = true;

                    Algorithm();

                    timer1.Start();

                }

                else if (radioStep.Checked)

                {

                    Algorithm();

                    Visualize();

                    if(!stop)

                    OneStep();

                    if (semantic)

                        {

                            button3.Enabled = true;

                            butStep.Enabled = true;

                            Start.Enabled = false;

                        }

                    Visualize();

                 }

            }

        }

 

        private void NewStart()

        {

          sost = 0;

            number_cell_tape = 1;

            old_number = 1;

            old_sost = 0;

            old_symbol = 0;

            stop = false;

            Tras.Clear();

        }

 

        public string alphabet;   

       

        private void Plus ()

        {

            Simbol Sim = new Simbol();

            Sim.ShowDialog();

 

 

            string SS = Sim.simbol;

           

            if (Sim.add && SS != ""&& SS !=" " &&!dataGridView1.Columns.Contains(SS))

            {

                dataGridView1.ColumnCount++;

dataGridView1.Columns[dataGridView1.ColumnCount - 1].HeaderText = SS;

dataGridView1.Columns[dataGridView1.ColumnCount - 1].Name = SS;

dataGridView1.Columns[dataGridView1.ColumnCount - 1].Width = 38;

                PosAdd();

                listBox1.Items.Add(SS);

            }

            else

                try

                {

if (dataGridView1.Columns.Contains(SS))


Информация о работе Система моделирования работы машины Тьюринга