Три переменные значения: максимальное, минимальное, фактическое

StackOverflow https://stackoverflow.com/questions/680185

  •  22-08-2019
  •  | 
  •  

Вопрос

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

A.Min = 1;
A.Max = 5;
A.Current= 4;
B.Min = 2;
B.Max = 4;
B.Current= 4;


A * B = {2, 20, 16}

Мой вопрос заключается в следующем: как называется этот подход и реализуют ли его какие-либо современные языки?

Это было полезно?

Решение

Многозначные переменные, подобные тем, которые вы описываете, могут использоваться в программировании, основанном на ограничениях.Недавнюю статью смотрите в Радуле и Сассмане, "Искусство пропагандиста".

МистерРадул выступил на ILC 2009 на прошлой неделе.Он привел пример (того, что можно было бы рассмотреть) многозначных переменных, которые представляют собой вероятностное приближение к "истине".(Заранее приношу извинения за любое искажение, у меня нет заметок.)

Рассмотрим систему, которая должна согласовывать показания двух тепловых датчиков.Предположим далее, что показания каждого датчика приходят с некоторой степенью неопределенности:датчик A говорит, что температура находится между A1 и A2, датчик B говорит, что температура находится между B1 и B2.Должен ли произойти сбой системы при попытке вычислить температуру?Возможно, "истину" можно выразить в терминах диапазона, в котором показания перекрываются.

Другие советы

Похоже, что в качестве "подхода" это может быть разновидность нечеткая логика.Особенно когда вы описываете его вероятностное использование.

Приложение C к оригинальной статье по Yacc (опубликовано в томе 2 Руководства программиста UNIX для версии 7;статья датирована 1978-07-31) описал "настольный калькулятор, который выполняет арифметику интервалов с плавающей запятой".Он использовал интервалы с обозначением "(min, max )" и реализовал арифметику, основанную на диапазоне.То, что вы описываете, также является расширением этого значения с 'current'.

Большинство объектно-ориентированных языков могли бы сделать это довольно легко, используя классы.

В C ++, в частности, было бы очень легко создать шаблонный класс, который обрабатывал бы это за вас, например, для любого базового типа.

Однако я не знаю ни одного языка, который поддерживал бы это как часть основного языка.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top