2010-11-29 4 views
10

Я знаю, это может показаться странным, но я хотел бы знать одно в этом новом мире, в который входит Microsoft Visual F #. Существует много применений этого языка, я собираюсь узнать, что касается парсинга, функционального программирования, структурированного программирования ... Но как насчет искусственного интеллекта?F # и Fuzzy Logic

Есть приложения для Fuzzy Logic? Является ли F # хорошим языком для использования в приложениях с нечеткой логикой?

В университете мы изучаем Пролог и аналогичные языки. Prolog способен создавать сложный запрос в очень простых и коротких выражениях (воспользовавшись предикатами и фактами). Может ли F # это сделать?

Заранее спасибо.

ответ

8

Нечеткая логика. F # не предоставляет каких-либо типов для реализации вычислений с нечеткой логикой из коробки, но, безусловно, можно использовать F # в этом домене. Краткость F # и способность определять пользовательские перегруженные операторы должны сделать код на основе нечеткой логики довольно приятным. Я сделал быстрый поиск и обнаружил несколько статей, реализующих нечеткую логику в F #:

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

F # не имеет никакой прямой поддержки возвратов, но это довольно легко писать алгоритмы, основанные на использовании возвратов рекурсию (который является основным механизмом управления потоком как в F # и Пролог).

Кроме того, возможно реализовать доменный язык для логического программирования в F #. Это означает, что вы реализуете что-то вроде Prolog внутри F #, а затем записываете свои алгоритмы поиска, используя этот мини-язык в F # (возможно, используя другие функции F # по мере необходимости). Дополнительную информацию о подобных проблемах вы можете найти в this question.

+0

Спасибо ... Я уже видел статьи, которые вы нашли, но просто хотел получить мнение от кого-то еще об этом аргументе. Я также думаю, что F # - очень мощный инструмент, который я собираюсь открыть в нем в эти дни ... :) Хорошо, спасибо за ваши рекомендации и усилия, чтобы ответить на мой вопрос. – Andry 2010-11-29 10:03:10

+0

Ах, извините, еще один вопрос ... Что вы подразумеваете под мини-языками? – Andry 2010-11-29 10:04:51

3

F # - язык общего назначения с некоторыми хорошими языковыми функциями, такими как выражение вычисления/Monad и цитата. Вы можете предположить, что он имеет ту же мощность, что и C#.

Это не похоже на Matlab или R, где встроено множество встроенных библиотек. Если вы хотите внедрить библиотеку Fuzzy Logic или другие алгоритмы AI с нуля, F # - очень хороший язык для вас, поскольку его языковые функции облегчают жизнь.

Но если вы просто хотите использовать библиотеку нечеткой логики, то использование других языков или специализированных систем будет более уместным, потому что F # или .Net в целом не имеют библиотек хорошего качества в этом аспекте.