Лабораторная работа №5 Разработка экспертной системы средствами Visual Prolog

ЛАБОРАТОРНАЯ РАБОТА №5

Разработка экспертной системы средствами Visual Prolog

1.Цель работы: Изучение принципов построения и организации экспертных систем, базирующихся на логике и правилах.

2. Краткие теоретические сведения

2.1 Разработка экспертных систем

Разработка > систем (ЭС) является наиболее плодотворной быстро развивающейся областью применения Пролога>. Очень важно понимать, как работают экспертные системы, так как они могут использоваться, фактически, в любой области знаний.

Экспертная система> – это компьютерная программа, которая в некоторой области проявляет степень познаний равнозначную сте­пени познания человека-эксперта. Обычно эта область строго ог­раничена. Однако, количество приложений огромно. Сюда входят понимание речи, анализ изображений, прогноз погоды, оценка бу­дущего урожая, медицинская диагностика, разработка интегральных схем, финансирование, управление воздушным движением, управле­ние боем и т. д.

Чтобы проводить экспертизу, компьютерная программа должна быть способна решать задачи посредством логического вывода и получать при этом достаточно надежные результаты. Программа должна иметь доступ к системе фактов, называемой базой знаний. Программа также должна во время консультации выводить заключения из информации, имеющейся в базе знаний. Некоторые экспертные> системы могут также использовать новую информацию, добавляемую во время консультации. Экспертную> систему, таким образом, можно представлять состоящей из трех частей:

1.  База знаний (БЗ).

2.  Механизм вывода (МВ).

3.  Система пользовательского интерфейса (СПИ).

База знаний – центральная часть экспертной системы> системы. Она содержит правила, описывающие отношения или явления, методы и знания для решения задач из области применения системы. Можно представлять базу знаний состоящей из фактических знаний и зна­ний, которые используются для вывода других знаний. Утверждение « Кеннеди был 35-м президентом Соединенных Штатов» – пример фактического знания. «Если у вас болит голова, то примите две таблетки цитрамона» ­­– пример знания для вывода. Сама база знаний обычно располагается на диске или другом носителе.

Механизм вывода содержит принципы и правила работы. Механизм вывода «знает», как использовать базу знаний так, чтобы можно было получать разумно согласующиеся заключения (выводы) из информации, находящейся в ней.

Когда <экспертной > системе задается вопрос, механизм вывода выбирает способ применения правил базы знаний для решения зада­чи, поставленной в вопросе. Фактически, механизм вывода запус­кает экспертную> систему в работу, определяя какие правила нужно вызвать и организуя к ним доступ в базу знаний. Механизм вывода выполняет правила, определяет, когда найдено приемлемое решение и передает результаты программе интерфейса с пользователем. Когда вопрос должен быть предварительно обработан, то доступ к базе знаний осуществляется через интерфейс с пользователем.

Ин­терфейс – это часть <экспертной > системы, которая взаимодействует с пользователем. Как правило, пользователи мало знают об организации базы знаний, поэтому интерфейс может помочь им работать с <экспертной > системой даже, если они не знают, как она организована. Интер­фейс может также объяснить пользователю, каким образом экспертная> система выводит результат.

В настоящем издании мы ограничимся лишь организацией БЗ и управлением стратегией вывода. Для чего рассмотрим два примера реализации ЭС средствами Пролога: ЭС, построенную на правилах, и ЭС, построенную на логике.

Во всех экспертных> системах существует зависимость между входным потоком данных и данными в базе знаний. Во время кон­сультации входные данные сопоставляются с данными в базе зна­ний. Результатом сопоставления является отрицательный или ут­вердительный ответ.

В системе, базирующейся на правилах, утвер­дительный результат является действием одного из продукционных правил. Эти продукционные правила определяются входными данны­ми.

Экспертная> система, базирующаяся на прави­лах (на Прологе) содержит множество правил. Предикаты в левой части правил определяют один из возможных вариантов решения задачи, предикаты в правой части всегда специфицируются другими правилами, помимо тех случаев, когда предикат просто проверяет, находится ли определенная информация в базе данных. Информация, помещаемая в базу данных, извлекается из ответов пользователя на задаваемые вопросы. Все ответы сохраняются, так как они могут понадобиться позднее.

<Экспертная > система также содержит интерпретатор в механизме выво­да. Работу этого интерпретатора можно описать последовательностью трех шагов: интерпретатор сопоставляет образец правила с элементами данных в базе знаний; если можно вызвать более одного правила, то интерпретатор использует механизм разрешения конфликта для выбора правила; интерпретатор применяет выбранное правило, чтобы най­ти ответ на вопрос. Этот процесс интерпретации является цикличес­ким и называется циклом «распознавание-действие».

Рассмотрим в качестве примера экспертной> системы на правилах систему для идентификации пород собак. Она помогает потен­циальному хозяину выбрать породу собаки в соответствии с опре­деленными критериями.

Предположим, что пользователь сообщил множество характеристик собаки в ответ на вопросы <экспертной системы. Интерпретатор работает в цикле распознавание-действие. Если характеристики, заданные пользователем, сопоставимы с характеристиками породы собаки, составляющими часть базы знаний, тогда вызывается соответствующее продукционное правило и в результате идентифицируется порода. Затем результат сообщается пользователю. Если порода не идентифицирована, это тоже сообщается пользователю.

Рассмотрим две породы собак, информация о кото­рых содержится в базе знаний. Гончая имеет короткую шерсть, высоту в холке меньше 57 см длинные уши и хороший характер. Датский дог имеет короткую шерсть, низко посаженный хвост, длинные уши, хоро­ший характер и вес более 45 кг.

Из этого описания видно, что обе породы имеют корот­кую шерсть, длинные уши и хороший характер. Рост гончей меньше 57 см в то время, как ничего не сказано о росте дога. Дог имеет низко посаженный хвост и вес более 45 кг – характеристики отсутствующие для гончей. Описание двух собак в терминах ука­занных характеристик достаточно, чтобы различить эти две поро­ды, и даже отличить их от любой другой породы в базе знаний.

Следующие продукционные правила могут быть составлены по указанным характеристикам:

dog_is(«Гончая»):– it_is(«короткоерстная собака»),

positive(«ее»,»высота в холке не более 57 см»),

positive(«у нее»,»длинные уши»),

positive(«у нее»,»дружелюбный характер»), !.

dog_is(«Great Dane»):– it_is(«длинношерстная собака»),

positive(«у нее»,»низко посаженный хвост»),

positive(«у нее»,»длинные уши»),

positive(«у нее»,»дружелюбный характер»),

positive(«ее»,»вес более 45 кг»), !.

Заметим, что в правилах длина шерсти может быть представлена с помощью предиката positive в виде:

positive(«у нее»,»короткая шерсть»).

Но использование предиката it_is позволяет ограничить «пространство поиска» (количество данных, проверяемых при поис­ке решения) одним поддеревом древовидной структуры, содержащей информацию о разных породах собак.

Экспертная> система, базирующаяся на правилах, позволяет проектировщику строить правила, которые естественным образом объединяют в группы связанные фрагменты знаний. Каждое продук­ционное правило может быть независимым от других. Эта независи­мость делает базу продукционных правил семантически модульной, т. е. группы информации не влияют друг на друга. Более того, мо­дульность базы правил позволяет развивать базу знаний, увеличи­вая ее.

ЛИСТИНГ

/* Программа: эксперт по породам собак */

/* Это продукционная система, базирующаяся на правилах*/

database

xpositive(symbol, symbol)

xnegative(symbol, symbol)

predicates

do_expert_job

do_consulting

ask(symbol, symbol)

dog_is(symbol)

it_is(symbol)

positive(symbol, symbol)

negative(symbol, symbol)

remember(symbol, symbol, symbol)

clear_facts

goal

do_expert_job.

clauses

/* Система пользовательского интерфейса */

do_expert_job :- nl, write(" * * * * * * * * * * * * * * * * * * * * * "),

nl, write(« * * * * * * * * * * * * * * * * * * * * * «),

nl, write(« ДОБРО ПОЖАЛОВАТЬ! «),nl, nl,

nl, write(« Проводится идентификация породы «),nl, nl,

nl, write(« Отвечайте, пожалуйста, 'да' или 'нет' «),

nl, write(« а вопросы о собаке, породу которой «),

nl, write(« Вы хотите определить «),

nl, write(« * * * * * * * * * * * * * * * * * * * * * * «),

nl, nl, do_consulting, write(«Нажмите любую клавишу»),

nl, readchar(_), removewindow.

do_consulting :– dog_is(X), !, nl, write(«Вероятно Ваша собака – «,X,».»),

nl, clear_facts.

do_consulting :­– nl, write(«Извините, я не смогу помочь Вам!»),

clear_facts.

ask(X, Y) :– write(« ?:– «,X, « «,Y, « ? «), readln(Reply),

remember(X, Y,Reply).

/* Механизм вывода */

positive(X, Y) :– xpositive(X, Y),!.

positive(X, Y) :– not(negative(X, Y)),!,ask(X, Y).

negative(X, Y) :– xnegative(X, Y),!.

remember(X, Y,yes) :– asserta(xpositive(X, Y)).

remember(X, Y,no) :– asserta(xnegative(X, Y)),fail.

clear_facts :– retract(xpositive(_,_)), fail.

clear_facts :– retract(xnegative(_,_)), fail.

/* Продукционные правила */

dog_is(«Английский Бульдог») :– it_is(«короткошерстная собака»),

positive(«ее»,»высота в холке не более 57 см»),

positive(«у нее»,»низко посаженный хвост»),

positive(«у нее»,»дружелюбный характер»),!.

dog_is(«Гончая») :– it_is(«короткошерстная собака»),

positive(«ее»,»высота в холке не более 57 см»),

positive(«у нее»,»длинные уши»),

positive(«у нее»,»дружелюбный характер»),!.

dog_is(«Немецкий Дог») :– it_is(«короткошерстная собака»),

positive(«у нее»,»низко посаженный хвост»),

positive(«у нее»,»дружелюбный характер»),

positive(«ее»,»вес более 45 кг»),!.

dog_is(«Американский Фоксхаунд») :– it_is(«короткошерстная собака»),

positive(«ее»,»высота в холке не более 77 см»),

positive(«у нее»,»длинные уши»),

positive(«у нее»,»дружелюбный характер»),!.

dog_is(«Кокер Спаниель») :– it_is(«длинношерстная собака»),

positive(«ее»,»высота в холке не более 57 см»),

positive(«у нее»,»низко посаженный хвост»),

positive(«у нее»,»длинные уши»),

positive(«у нее»,»дружелюбный характер»),!.

dog_is(«Ирландский Сеттер») :– it_is(«длинношерстная собака»),

positive(«ее»,»высота в холке не более 77 см»),

positive(«у нее»,»длинные уши»),!.

dog_is(«Колли») :– it_is(«длинношерстная собака»),

positive(«ее»,»высота в холке не более 77 см»),

positive(«у нее»,»низко посаженный хвост»),

positive(«у нее»,»дружелюбный характер»),!.

dog_is(«Сенбернар») :– it_is(«длинношерстная собака»),

positive(«у нее»,»низко посаженный хвост»),

positive(«у нее»,»дружелюбный характер»),

positive(«ее»,»вес более 45 кг»),!.

it_is(«короткошерстная собака «) :–

positive(«это»,»короткошерстная собака «),!.

it_is(«длинношерстная собака «) :–

positive(«это»,»длинношерстная собака «),!.

/* Конец программы */

В экспертных> системах, базирующихся на фактах, база знаний состоит из утверждений в виде предложений логики предикатов. Такие предложения могут группироваться, образуя БД Турбо-Пролога. Правила могут либо описывать данные, либо управ­лять процессом внутренней унификации Турбо-Пролога.

Так же как и в системе> на правилах экспертная> система, ба­зирующаяся на фактах, имеет множество правил, которые могут вы­зываться с помощью данных из входного потока. Система имеет также интерпретатор, который может выбирать и активизировать модули, включаемые в работу системы.

Интерпретатор выполняет различные функции внутри системы на основе следующей схемы:

1.  Система имеет предложения в базе знаний, которые уп­равляют поиском и сопоставлением. Интерпретатор сопоставляет эти предложения с элементами данных в базе данных.

2.  Если может быть вызвано более одного правила, то сис­тема использует возможности Турбо-Пролога для разрешения конфликта. Следовательно, пользователю/программисту не нужно рассматривать потенциально возможные конфликты.

3.  Система получает результаты унификационного процесса автоматически, поэтому они могут направляться на нужное уст­ройство вывода информации.

Так же как и в системе, базирующейся на правилах, данный циклический процесс является процессом распознавание-действие. Красота и большие возможности системы, основанной на фактах, заключаются в том, что она отражает структуру самого Турбо-Про­лога. Этим объясняется тот факт, что она очень эффективна в ра­боте.

Наиболее важным аспектом для базы знаний в системе, осно­ванной на фактах, является проектирование базы знаний, ее ут­верждений и их структуры. База знаний должна иметь недвусмыс­ленную логическую организацию, и она должна содержать минимум избыточной информации. Так же как и в системе, базирующейся на правилах, минимально достаточное количество данных образуют на­иболее эффективную систему. Утверждения базы знаний для гончей и дога выглядят так:

rule(1,»Собака»,»Гончая»,[1,2,3,4]).

rule(2,»Собака»,»Немецкий Дог»,[1,5,3,4,6]).

cond(1,»короткошерстная»).

cond(2,»высота в холке не более 57 см»).

cond(3,»длинные уши»).

cond(4,»дружелюбный характер»).

cond(5,»низко посаженный хвост»).

cond(6,»вес более 45 кг»).

Заметьте, что в каждом предложении типа rule первый аргу­мент ­– номер правила, второй аргумент – тип объекта («собака») и третий аргумент – порода собаки. В нашем случае это гончая или дог. Список целых чисел задает номера условий из предложений типа cond (условие). Предложения типа cond содержат все характеристики для любой породы, представленной в базе знаний.

Списки номеров условий служат для хранения множества фак­тов, согласно которым выбираются предложения типа rule. Интерп­ретатор в экспертной> системе, базирующейся на логике, использу­ет эти номера условий, чтобы делать соответствующий выбор.

Добавление и обновление предложений базы знаний являются простыми операциями (предикаты retract и assert). Экспертные системы, базирующиеся на фактах, легко проектировать, развивать и поддерживать в Турбо-Прологе, так как по мере рас­ширения базы знаний программа не требует модификации. Расширение, прежде всего, заключается в постепенном добавлении новых ут­верждений.

ЛИСТИНГ

/* Программа: Эксперт по породам собак */

/* Пример <экспертной > системы, базирующейся на логике */

domains

conditions = integer *

history = integer *

database

/* Предикаты базы данных */

rule(integer, symbol, symbol, conditions)

cond(integer, symbol)

yes(integer)

no(integer)

predicates

/* Предикаты системы пользовательского интерфейса */

do_expert_job

do_consulting

goes(symbol)

clear

/* Предикаты механизма вывода */

go(history, symbol)

check(integer, history, conditions)

Inpo(history, integer, integer, symbol)

do_answer(history, integer, symbol, integer, integer)

goal

do_expert_job.

clauses

/* База знаний (БЗ) */

rule(1, «Собака», «Короткошерстная собака», [1]).

rule(2, «Собака», «Длинношерстная собака «, [2]).

rule(3, «Короткошерстная собака»,»Английский бульдог»,[3,5,7]).

rule(4, «Короткошерстная собака»,»Гончая», [3,6,7]).

rule(5, «Короткошерстная собака»,»Немецкий Дог», [5,6,7,8]).

rule(6, «Короткошерстная собака»,»Американский фоксхаунд»,

[4,6,7]).

rule(7, «Длинношерстная собака «, «Кокер спаниель», [3,5,6,7]).

rule(8, «Длинношерстная собака «, «Ирландский Сеттер», [4,6]).

rule(9, «Длинношерстная собака «, «Колли», [4,5,7]).

rule(10, «Длинношерстная собака «, «Сенбернар», [5,7,8]).

cond(1,»Короткошерстная»).

cond(2,»Длинношерстная»).

cond(3,»Высота в холке не более 57 см»).

cond(4,»Высота в холке не более 77 см «).

cond(5,»Низко посаженный хвост»).

cond(6, «Длинные уши»).

cond(7, «Дружелюбный характер»).

cond(8, «Вес более 45 кг»).

/* Система пользовательского интерфейса */

do_expert_job :–

makewindow(1,7,7,»ЭКСПЕРТ ПО ПОРОДАМ СОБАК», 0, 0, 25, 80),

do_consulting, nl, nl, nl, nl, write(«Нажмите любую клавишу»),

readchar(_), exit.

do_consulting :–goes(Mygoal),go([],Mygoal),!.

do_consulting :­­–nl, write(«Извините, я не смогу Вам помочь») ,clear.

do_consulting.

goes(Mygoal) :– clear, clearwindow, nl, nl, nl, nl,

write(«ДОБРО ПОЖАЛОВАТЬ»),nl, nl, nl,

write(«Проводится идентификация породы»),nl,

write(«Для того, чтобы начать процесс идентификации,»),nl,

write(«введите слово 'Собака'. «), nl, nl, readln(Mygoal),!.

inpo(HISTORY, RNO, BNO, TEXT) :–write(«?:– «,TEXT,» ? «),

makewindow(2,7,7,»Для ответа на вопрос»,10,54,7,35),

write(«введите 1, если Ваш ответ 'да' ,»),

write(«введите 2, если Ваш ответ 'нет' ,»),

write(«введите 0, для выхода из системы»),nl,

readint(RESPONSE),

clearwindow, shiftwindow(1),

do_answer(HISTORY, RNO, TEXT, BNO, RESPONSE).

/* Механизм вывода */

go(HISTORY, Mygoal) :–rule(RNO, Mygoal, NY, COND),

check(RNO, HISTORY, COND),!,

go([RNO|HISTORY],NY).

go(_,Mygoal) :–not(rule(_,Mygoal,_,_)),!,

nl, write(«Вероятно Ваша собака – «,Mygoal,».»), nl, nl, nl.

check(RNO, HISTORY,[BNO|REST]) :­–

yes(BNO),!,check(RNO, HISTORY, REST).

check(_,_,[BNO|_]) :– no(BNO),!,fail.

check(RNO, HISTORY,[BNO|REST]) :–cond(BNO, TEXT),

inpo(HISTORY, RNO, BNO, TEXT),

check(RNO, HISTORY, REST).

check(_,_,[]).

do_answer(_,_,_,_,0):– exit.

do_answer(_,_,_,BNO,1) :–assert(yes(BNO)),write(yes),nl.

do_answer(_,_,_,BNO,2) :–assert(no(BNO)),write(no),nl, fail.

clear :– retract(yes(_)),retract(no(_)),fail,!.

clear.

/* Конец программы */

Выбор типа ЭС

Программы для выбора породы собаки, приведенные выше, используются для иллюстрации методов построения системы, базирующейся на правилах, и системы, базирующейся на фактах. Таким образом, есть возможность сравнить два различных подхода при работе с одними и теми же данными и сделать некоторые важные выводы.

Итак, если экспертная система, которую Вы хотите сделать, в конечном счете может содержать сотни продукционных правил, то трудно определить эффект от добавления дополнительных правил. В Турбо-Прологе продукционные правила помещаются в программу, и, следовательно, размеры программы увеличиваются по мере добавле­ния правил. Размеры памяти, в конце концов, ограничивают число правил. В этом случае использование системы на правилах стано­вится проблематичным. В то же время, в системе, базирующейся на логике, где база знаний может находиться в файле на диске, ограничения на размеры базы знаний не накладываются. Поэтому система, осно­ванная на логике, в этом случае предпочтительнее.

Если же Ваша экспертная> система будет содержать не более нескольких сотен правил, использование системы, базирующейся на правилах более предпочтительно. В силу того, что продукционные правила почти не зависят друг от друга, создание и тестирование такой экспертная системы проще. Просто осуществляется и измене­ние правил с целью изучить эффект, вызванный таким изменением. В системах же, базирующихся на фактах, изменение параметров внутри базы знаний должно производится с большей осторожностью, так как изменения менее заметны, а результат может быть разруши­тельным и восстановление затруднительным.

Если быстрота является главным требованием к разрабатывае­мой экспертной системе, то можно выбрать либо систе­му на фактах, полностью находящуюся в оперативной памяти, либо систему, базирующуюся на правилах. Обе будут работать хорошо. Если, од­нако, экспертная> система должна содержать большую базу знаний, то у разработчика имеется единственный вариант – система на фактах, находящаяся на диске.

КОНТРОЛЬНЫЕ ВОПРОСЫ

1.  Для чего служит и что содержит секция database?

2.  Какое имя получает БД по умолчанию?

3.  Перечислить достоинства и недостатки использования резидентных БД?

4.  Перечислить достоинства и недостатки использования нерезидентных БД.

5.  Для чего предназначены и как выполняются стандартные предикаты asserta, assertz, retract, save, consult, readterm, findall?

6.  Опишите работу стандартного предиката dir. Приведите примеры.

7.  Для каких целей используется стандартный предикат disk? Приведите примеры его использования.

8.  Как в прологе описываются файлы?

9.  Привести стандартные предикаты для работы с резидентными БД.

10. Для чего предназначены и как выполняются стандартные предикаты openread, openwrite, openappend, openmodify, readdevice, writedevice, closefile.

ТРЕБОВАНИЯ К ОТЧЕТУ

Отчет должен содержать задание, структуру таблиц БД, тексты программы на языке Турбо-Пролог, распечатку результата работы тестового примера.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Программирование на языке пролог> для искусственного интеллекта. / Пер. с англ. – М.: Мир, 1990. – 560 с.

2. Искусство программирования на языке\ Поролог. / Л. Стерлинг, Э. Шапиро; Пер. с англ. – М.: Мир, 1990. ‑ 225 с.

3. Ин Ц. Использование Турбо-Пролога. / Ц. Ин, Д. Соломин; Пер. с англ. – М.: Мир, 1993. – 608 с.

5. И. Информатика. Лекции и практикум. – СПб.: КОРОНА принт, 2000. – 256 с.

6. Основы современных компьютерных технологий: Учеб. пособие / Б. Н. Артамонов, Г. И. Брикалов, В. Э. Гофман, Я. Е. Кадигроб, Р. И. Компаниец, А. Г. Липецких, М. Г. Мальцев, Ю. И. Рыжков, А. Д. Хоменко, В. М. Цыганов; Под ред. проф. Д. – СПб.: КОРОНА принт, 1998. – 448 с.

7. Основы программирования на языке Турбо-пролог: Методические указания к практическим занятиям по курсу «Представление знаний в информационных системах» / Воронеж. гос. технол. акад.; Сост. И. О. Павлов, С. В. Кулакова. – Воронеж, 2001. – 32 с.

Основные порталы (построено редакторами)

Домашний очаг

ДомДачаСадоводствоДетиАктивность ребенкаИгрыКрасотаЖенщины(Беременность)СемьяХобби
Здоровье: • АнатомияБолезниВредные привычкиДиагностикаНародная медицинаПервая помощьПитаниеФармацевтика
История: СССРИстория РоссииРоссийская Империя
Окружающий мир: Животный мирДомашние животныеНасекомыеРастенияПриродаКатаклизмыКосмосКлиматСтихийные бедствия

Справочная информация

ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организации
МуниципалитетыРайоныОбразованияПрограммы
Отчеты: • по упоминаниямДокументная базаЦенные бумаги
Положения: • Финансовые документы
Постановления: • Рубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датам
Регламенты
Термины: • Научная терминологияФинансоваяЭкономическая
Время: • Даты2015 год2016 год
Документы в финансовой сферев инвестиционнойФинансовые документы - программы

Техника

АвиацияАвтоВычислительная техникаОборудование(Электрооборудование)РадиоТехнологии(Аудио-видео)(Компьютеры)

Общество

БезопасностьГражданские права и свободыИскусство(Музыка)Культура(Этика)Мировые именаПолитика(Геополитика)(Идеологические конфликты)ВластьЗаговоры и переворотыГражданская позицияМиграцияРелигии и верования(Конфессии)ХристианствоМифологияРазвлеченияМасс МедиаСпорт (Боевые искусства)ТранспортТуризм
Войны и конфликты: АрмияВоенная техникаЗвания и награды

Образование и наука

Наука: Контрольные работыНаучно-технический прогрессПедагогикаРабочие программыФакультетыМетодические рекомендацииШколаПрофессиональное образованиеМотивация учащихся
Предметы: БиологияГеографияГеологияИсторияЛитератураЛитературные жанрыЛитературные героиМатематикаМедицинаМузыкаПравоЖилищное правоЗемельное правоУголовное правоКодексыПсихология (Логика) • Русский языкСоциологияФизикаФилологияФилософияХимияЮриспруденция

Мир

Регионы: АзияАмерикаАфрикаЕвропаПрибалтикаЕвропейская политикаОкеанияГорода мира
Россия: • МоскваКавказ
Регионы РоссииПрограммы регионовЭкономика

Бизнес и финансы

Бизнес: • БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумаги: • УправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги - контрольЦенные бумаги - оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудит
Промышленность: • МеталлургияНефтьСельское хозяйствоЭнергетика
СтроительствоАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством