Реализация сетевой модели вычислений с аксиоматической и рекурсивной формами задания функций и предикатов (бакалаврская работа), страница 7
Описание файла
PDF-файл из архива "Реализация сетевой модели вычислений с аксиоматической и рекурсивной формами задания функций и предикатов (бакалаврская работа)", который расположен в категории "". Всё это находится в предмете "дипломы и вкр" из 8 семестр, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "выпускные работы и поступление в магистратуру" в общих файлах.
Просмотр PDF-файла онлайн
Текст 7 страницы из PDF
Класс для работы со списком заменclass Inversion {List<Pair> defs = new List<Pair>();bool check() {List<Pair> bk = defs;defs = new List<Pair>();bool result = false;for (int i = 0; i < bk.Count; i++) {for (int j = 0; j < defs.Count; j++) {if (defs[j].output == bk[i].input) {defs[j].output = bk[i].output;result = true;}}defs.Add(bk[i]);}defs = defs.Where(p => p.input !=p.output).ToList();defs = defs.Distinct().ToList();return result;}public void Add(Pair def) {defs.Add(def);Check();}80public void Check() {Label1:bool res = check();if (res)goto Label1;else {defs.Reverse();res = check();if (res)goto Label1;}}public List<Pair> Return() {return defs;}}8.
Классы для работы с деревьямиpublic class Tree : Base{public Tree(params TypeTree[] lst) {operands = lst.ToList();}public Tree(PrologView pv) : base() {prolog = pv;}protected Func<PrologView, PrologView,PrologView> AggregateFunction;public List<TypeTree> operands = newList<TypeTree>();/// <summary>/// Вычисление характеристик дерева/// </summary>/// <returns>true - дерево можно заменить напролог представление</returns>public override bool CalcArityLite(bool recalc =false) {81LOGClass.Add(GetTypeFunction(), "Попыткасоздания Prolog представления для дерева " + this);if (recalc)prolog = null;if (prolog == null)return CalcArity(recalc);else {LOGClass.Add(GetTypeFunction(),"Представление уже создано " + prolog);return true;}}/// <summary>/// Вычисление арности дерева/// </summary>/// <returns>true если арность удалосьвычислить, иначе false</returns>bool CalcArity(bool lite = false) {if (operands.Count == 0) {prolog = new PrologView(new List<int>(),new List<int>());LOGClass.Add(GetTypeFunction(),"Операндов нет.
Представление " + prolog);return true;} else {bool flag = true;prolog = null;if (lite) {if (operands.All(p => p.prolog !=null)) {prolog = operands.Select(p =>p.prolog).Aggregate(AggregateFunction);if (prolog != null)LOGClass.Add(GetTypeFunction(), "Арности операндовподсчитаны " + ToString(1) + " эквивалентна " +ToString(2));elseLOGClass.Add(GetTypeFunction(), "Арности операндов82подсчитаны.
Prolog представление не может существовать " +ToString(1));return true;} else {return false;}} else {for (int i = 0; i < operands.Count;i++)if (operands[i].prolog == null){if(operands[i].CalcArityLite()) {if (operands[i].prolog== null)//Дерево не можетсуществоватьreturn true;} else {flag = false;}}if (flag) {prolog = operands.Select(p =>p.prolog).Aggregate(AggregateFunction);if (prolog != null)LOGClass.Add(GetTypeFunction(), "Арности операндовподсчитаны " + ToString(1) + " эквивалентна " +ToString(2));elseLOGClass.Add(GetTypeFunction(), "Арности операндовподсчитаны. Prolog представление не может существовать " +ToString(1));return true;} else {LOGClass.Add(GetTypeFunction(),"Арность одного или нескольких операндов вычислить неудалось " + ToString());return false;83}}}}public List<int> GetRelation() {List<int> result = new List<int>();if (operands.Count > 0) {for (int i = 0; i < operands.Count; i++) {if (operands[i].Type ==TypeTree.TType.Tree)result =result.Union(operands[i].Tree.GetRelation()).ToList();elseresult.Add(operands[i].Prolog);}}return result;}public override string ToString() {return ToString(1);}public virtual string ToString(int i) {if (i == 2)if (prolog != null)return prolog.ToString();elsereturn "No string";elsereturn "No define string";}public override string GetTypeFunction() {return "Tree";}}public class LinearTree : Tree{84public LinearTree(params TypeTree[] lst) :base(lst) {AggregateFunction = (p, q) => p * q;}public override string ToString(int i) {if (i == 1) {if (operands.Count == 0)return "";else if (operands.Count == 1)return operands[0].ToString(1);elsereturn operands.Select(p => "(" +p.ToString(1) + ")").Aggregate((x, y) => x + "*" + y);} else {return prolog.Arity + prolog.ToString();}}public override string GetTypeFunction() {return "Linear Tree";}}public class ParallelTree : Tree{public ParallelTree(params TypeTree[] t): base(t) {AggregateFunction = (p, q) => p + q;}public override string ToString(int i) {if (i == 1) {if (operands.Count == 0)return "";else if (operands.Count == 1)return operands[0].ToString(1);85elsereturn operands.Select(p =>p.ToString(1)).Aggregate((x, y) => x + "#" + y);} else {return prolog.Arity + prolog.ToString();}}public override string GetTypeFunction() {return "Parallel Tree";}}9.
Входной файлA=(---#(<--*--<)#---)*(---#S#---#---)*(>--#@)*(-->#S);A=((---#N#---)*(>--*-->#---));(+0+:+1)N;(+1+:+1)S;(+1+:+1)B;TestReduce=E#E*>--*-->;TestReduce2=(S#N)*];(+2+:+2)Ah;(+1+:+1)Bh;Test5=(---#---#[)*(---#Ah#---)*(--<#---#---#---)*(Bh#]#---#---)*(>--#---);Test4=(---#---)*(---#--<)*(---#Bh#---#[)*(---#---#Ah#---)*(---#]#---#--)*(]#---);Query={:A(S(N),N)};Test=(---#--<#---)*(S#S#B#B)*(>--#>--);Test2=(---#--<#---)*(>--#---#---)*(S#B#B)*(---#>--);Test3=(---#--<#---)*(>--#>--)*(S#B);Rec=[*(S#---)*];Rec1=[*(S#S)*];Rec2=(S#N)*];QQQ=Rec1;PrologText={a:b?b=S(a)};86ОГЛАВЛЕНИЕВведение.........................................................................................................
11. Теоретическая часть.................................................................................. 21.1. Основные понятия .............................................................................. 21.2. Языки и схемы направленных отношений .......................................
31.3. Комбинаторные d -отношения. ........................................................ 61.4. Правила вычисления схем направленных отношений.................... 91.5. Схемы аксиом .................................................................................... 112. Различные представления схем направленных отношений ............... 132.1. Схематическое представление ....................................................... 132.2. Алгебраическое представление .......................................................
172.3. Графическое представление. ........................................................... 183. Реализация программы ........................................................................... 193.1. Построение графа переходов для грамматики .............................. 203.2. Описание объектов программы. ...................................................... 243.3.
Процесс создания пользовательской функции из алгебраическогопредставления ..................................................................................................... 253.4.Процесссозданияграфиескогопредставленияизалгебраического ................................................................................................. 263.5. Создание графического представления и его проверка................ 284. Описание программы.............................................................................. 294.1. Графический интерфейс ...................................................................
294.2. Вывод ................................................................................................. 324.3. Перспективы ...................................................................................... 32875. Использованная литература ................................................................... 34Приложение ................................................................................................. 351. Описание грамматики ......................................................................... 352. Класс для составления функций по списку лексем .......................... 373.
Лексический разбор на основе грамматики ...................................... 394. Классы для объектов внутреннего представления НО .................... 475. Класс для графического представления .................................... 616. Создание списка зависимостей из списка лексем ............................ 727. Класс для работы со списком замен .................................................. 798. Классы для работы с деревьями .........................................................
809. Входной файл ....................................................................................... 85.