Предикат... или какой-то другой термин?

Просто из любопытства: если у меня есть оператор класса (или функция и т. П.), Который принимает несколько аргументов (обычно 1 или 2) и возвращает значения 1 из 3 (вместо логического значения true или false), должен ли он все еще называться предикатом? Или частный случай нечеткой логики? Или что?

Пример:
template <class T>
class BinaryPredicate {
public:
virtual int operator()(const T& lhs, const T& rhs) const = 0;
};

который возвращает -1, 0 или 1 в соответствии с определенной унаследованной операторной функцией (например, для определения порядка).

2 ответа

Решение

Хм, вы возвращаете конкретные значения из вашей функции, и в них нет ничего нечеткого, вы находитесь больше в трехзначной логической области (иногда называемой трехвалентной), чем в нечеткой области. Например, тривалент очень популярен в электронике (логика трех состояний). Устройство может находиться в 3 состояниях: логическое (true), логический ноль (false) и высокий импеданс.

Предикат предполагает, что вы подтверждаете правду о чем-то, что предполагает истинный и ложный результат и только истинный и ложный результат.

В этом случае я бы лично назвал это "Сравнением", поскольку оно действительно возвращает результат, обычно используемый для операций сравнения - отрицательный, нулевой или положительный.

Другие вопросы по тегам