Руководство C# | Операторы отношения и логические операторы
Мы запустили ТГ-канал по урокам C#
Toggle navigation
Professor Web
- C# 5.0 и .NET 4.5
- Руководство C# — Часть 1
- Руководство C# — Часть 2
- Основы .NET
- Сборки .NET
- Потоки и файлы
- Работа с сетью
- Оптимизация приложений
- WPF
- Основа WPF
- Элементы управления WPF
- Привязка и стили
- Графика и анимация
- Шаблоны WPF
- Периферия WPF
- Темы WPF
- Dark Blue UI
- Dark Orange UI
- Silverlight 5
- Работа с БД
- ADO.NET
- Entity Framework 6
- SQL Server 2012
- Оконные функции
- LINQ
- LINQ to Objects
- LINQ to XML
- LINQ to DataSet и SQL
- LINQ to Entities
- Parallel LINQ
- ASP.NET
- Основы ASP.NET
- Веб-сайты
- Безопасность
- Интернет магазин
- ASP.NET Web Forms 4.5
- ASP.NET MVC 5
- Аутентификация
- Windows 8/10
- WinRT — основы
- WinRT — расширения
- Программы
- Expression Blend 4
- Visual Studio
Логические операции if / else — c++ — Каталог статей
Пока мы рассматривали только простые условия, которые выражали в терминах
операций отношения
и операций проверки на равенство
Каждое решение принималось на основе одного условия. Если мы хотим в процессе
принятия решения проверять несколько условий, мы вынуждены были бы реализовывать
эти проверки отдельными операторами или вложенными структурами
if или if/else.
Например,
#include < iostream.h > // Необходимо определить принадлежит ли число, введенное пользователем, интервалу (1, 10). void main() { int i; cout << "Input i: " << "\n"; cin >> i; // Здесь мы используем вложенный оператор if if ( i > 1 ) if (i < 10 ) cout << " i принадлежит интервалу (1, 10)"<< "\n"; else cout << " i не принадлежит интервалу (1, 10)" << "\n"; }
Чтобы избежать подобных вложений, С++ предоставляет нам логические
операции, которые могут использоваться для формирования сложных условий
путем комбинирования простых.
&& | — | (логическое И), |
---|---|---|
|| | — | (логическое ИЛИ) и |
! | — | (логическое НЕ, называемое также логическое отрицание). |
Рассмотрим примеры каждой из них.
Предположим, мы хотим обеспечить в некоторой точке программы, чтобы
определенный путь расчета выбирался только в случае, когда два условия
одновременно истинны. Тогда мы можем применить логическую операцию
&& (логическое И), например:
if (gender == 1 && age >= 65)
++seniorFemales;
Этот оператор if содержит два простых условия. Условие gender ==
1 может проверяться, например, чтобы определить, является ли данное лицо
женщиной.
Условие age >= 65 проверяется, чтобы определить, является ли
человек пожилым гражданином. Проверка этих двух простых условий выполняется
первой, поскольку приоритет обеих операций == и >= выше, чем
приоритет операции & &. Затем оператор if рассматривает
комбинацию этих условий
(gender ==1) && (age >=
65)
и если она истинна, то выполняется оператор ++seniorFemales;
Таблица ниже поясняет действие операции && . Эта таблица
показывает все четыре возможных сочетания комбинаций ложного (false ,
нулевого) и истинного (true, ненулевого) значений первого и второго
выражений. Подобные таблицы часто называются таблицами истинности. C++
воспринимает как 0 или как 1 все выражения, содержащие операции отношения,
проверки на равенство или логические операции. Хотя C++ возвращает 1, если
результат равен true, он воспринимает как true любое ненулевое
значение.
выражение 1 | выражение 2 | выражение 1 & & выражение 2 |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
Таким образом,
результат операции логического И ( &
&) будет истинна, тогда и только тогда, когда оба условия
истинны!
Теперь давайте посмотрим, как использование логического И ( & &)
упростит наш пример.
#include < iostream.h > // Необходимо определить принадлежит ли число, введенное пользователем, интервалу (1, 10). void main() { int i; cout << "Input i: " << "\n"; cin >> i; if ( i > 1 && i < 10 ) cout << " i принадлежит интервалу (1, 10)"<< "\n"; else cout << " i не принадлежит интервалу (1, 10)" << "\n"; }
Логическая операция || (логическое ИЛИ). Предположим, мы хотим обеспечить в
некоторой точке программы, чтобы определенный путь расчета выбирался только в
случае, когда хотя бы одно из двух условий истинно. В этом случае мы можем
применить логическую операцию ||. Например,
if (semesterAverage >= 90 || finalExam >= 90) cout << «Оценка
студента — A \n»;
Этот оператор также содержит два простых условия. Условие semesterAverage
>= 90 проверяется, чтобы определить, заслужил ли студент оценки «А» за курс в
результате постоянной работы в течение семестра. Условие finalExam >== 90
проверяется, чтобы определить, заслужил ли студент оценки «А» за курс вследствие
выдающихся результатов на заключительном экзамене. Затем оператор if
рассматривает комбинацию этих условий
(semesterAverage >= 90) || (finalExam >= 90)
и присуждает студенту оценку «А», если любое из этих условий или оба они
истины. Отметим, что сообщение «Оценка студента — А» не печатается только, если
оба простых условия ложны (если их значения равны 0). Ниже приводится таблица
истинности для логической операции ИЛИ (||).
выражение 1 | выражение 2 | выражение 1 || выражение 2 |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
Таким образом, результат операции логического ИЛИ (||) будет истинна, когда
хотя бы одно из двух условий истинна!
Операция && имеет более высокий приоритет, чем операция ||. Обе эти
операции имеют ассоциативность слева направо. Выражение, содержащее операции
&& и ||, оценивается только до тех пор, пока его истинность или ложность
не станет очевидной. Таким образом, анализ выражения
gender ==1 && age >= 65
будет немедленно остановлен, если значение gender не равно 1 (т.е. условие в
целом заведомо ложно), и продолжится, если значение gender равно 1 (т.е. в целом
может оказаться истинным, если будет истинным условие age >= 65).
C++содержит логическую операцию ! (логическое отрицание), чтобы программист
мог изменить значение условия на «противоположное». В отличие от операций
&& и ||, которые комбинируют два условия (и, следовательно, являются
бинарными операциями), операция отрицания имеет в качестве операнда только одно
условие (и, следовательно, является унарной операцией). Операция логического
отрицания помещается перед соответствующим условием, когда мы хотим выбрать
некоторый вариант расчета в случае, если первоначально (без учета операции
логического отрицания) это условие ложно. Приведем пример фрагмента программы:
if ( !(grade == sentineValue) ) cout << «Следующая оценка — » <<
grade <<«\n «;
Скобки, в которые помещено условие grade == sentineValue необходимы, так как
операция логического отрицания имеет более высокий приоритет, чем операция
проверки равенства. Ниже приводится таблица истинности операции логического
отрицания.
выражение | ! выражение |
---|---|
true | false |
false | true |
В большинстве случаев программист может избежать применения логического
отрицания, изменив выражение условия с помощью соответствующих операций
отношения и проверки равенства. Например, предыдущий оператор может быть записан
в виде
if ( grade != sentineValue ) cout << «Следующая оценка — » <<
grade << «\n «;
Подобная гибкость часто может помочь программисту выразить условие в наиболее
естественном и удобном виде.
ЕГЭ по информатике — Задание 2 (Мощнейший метод)
Здравствуйте, дорогие друзья! Сегодня разберём, как решать второе задание из ЕГЭ по информатике 2020.
Во втором задании ЕГЭ по информатике у нас обычно есть логическая функция, которая зависит от логических переменных. Логические переменные могут принимать только два значения: 0 (Ложь) или 1 (Истина).
С логическими переменными можно производить логические операции. При решении второго задания из ЕГЭ по информатике необходимо твёрдо знать каждую логическую операцию, и давайте рассмотрим их.
Порядок выполнения логических операций:
- () — операции в скобках
- ¬ — логическое отрицание
- ∧ — логическое умножение
- ∨ — логическое сложение
- ⟶ — следование
- ≡ — равнозначность
Так же на ЕГЭ по информатике будет полезно знать логические формулы :
Ещё соотношения:
Передём к решению задач из ЕГЭ по информатике
Задача 1 (лёгкая)
Логическая функция F задаётся выражением z ∧ ¬y ∧ (w → x).
Дан частично з
правила построения и преобразования логических выражений
Алгебра логики позволяет легко преобразовывать логические выражения, что бывает очень полезно. В этой заметке я хочу максимально просто, без математических обозначений, которые непривычны большинству людей, рассказать об этих простых и мощных правилах.
Обозначения
Я буду придерживаться обозначений, ясных большинству людей и привычных для программистов.
• «Истина» — true
• «Ложь» — false
• Логическое «и» — and
• Логическое «или» — or
• Логическое отрицание — not
Порядок операций я буду обозначать скобками и буду предполагать, что отрицание имеет наибольший приоритет. То есть выражение
A and not B
следует понимать как
A and (not B)
Таблицы истинности
Коротко напомню правила выполнения операций
not true = false
false and false = false
false or false = false
not false = true
true and false = false
true or false = true
false and true = false
false or true = true
true and true = true
true or true = true
Свойства операций
Логические операции во многом аналогичны привычным математическим, но имеют и свою специфику.
Коммутативность — «от перестановки слагаемых сумма не изменяется»
A and B = B and A
A or B = B or A
Идемпотентность
X and X = X
X or X = X
Ассоциативность — порядок выполнения операций не важен
(A and B) and C = A and (B and C)
(A or B) or C = A or (B or C)
Дистрибутивность — раскрытие скобок
C or (A and B) = (C or A) and (C or B)
C and (A or B) = (C and A) or (C and B)
Законы де Моргана (ударение на «о»):
not (A and B) = (not A) or (not B)
not (A or B) = (not A) and (not B)
Законы поглощения:
A and (A or B) = A
A or (A and B) = A
Другие полезные закономерности, в которых фигурируют константы true и false:
A and true = A
A or true = true
A and false = false
A or false = AA and (not A) = false
A or (not A) = true
Пример
Например, вам надо выполнить некое действие с файлом, «если дата его создания T меньше времени L, а если время T больше L, то требуется выполнение дополнительного условия P». Дословно это можно записать так:
T L and P)
Используем дистрибутивность — раскрываем скобки:
(T L) and (T
Первая скобка всегда «истина», а «истина и что-то — равно что-то». Получаем выражение:
T
Даже в таком простом выражении нам удалось вдвое уменьшить количество операций.
Про что здесь не рассказано
Строго говоря, алгебра логики рассматривает не только операции «и», «или» и «не». Другие операции не обладают всем перечисленными свойствами и заслуживают отдельного рассказа. Но я не стал здесь их рассматривать, так как в прикладном программировании используются преимущественно только три операции, а любые другие можно выразить через эти три.
Например, «исключающее или» можно выразить так:
A xor B = (A or B) and (not A or not B)
или
A xor B = (A and not B) or (B and not A)
C ++ Реляционные и логические операторы (с примерами)
В C ++ реляционные и логические операторы сравнивают два или более операндов и возвращают истинных
или ложных
значений.
Мы используем этих операторов при принятии решений.
Операторы отношения C ++
Оператор отношения используется для проверки связи между двумя операндами. Например,
// проверяет, больше ли a, чем b
а> б;
Здесь >
— оператор отношения.Он проверяет, превышает ли a b или нет.
Если отношение истинно , оно возвращает 1 , тогда как если отношение ложно , оно возвращает 0 .
В следующей таблице перечислены операторы отношения, используемые в C ++.
Оператор | Значение | Пример |
---|---|---|
== | равно | 3 == 5 дает нам ложь |
! = | не равно | 3! = 5 дает нам true |
> | больше | 3> 5 дает нам ложь |
< | Менее | 3 <5 дает нам истинное |
> = | больше или равно | 3> = 5 даст нам ложь |
<= | Меньше или равно | 3 <= 5 дает нам истинный |
== Оператор
Оператор "равно ==
" возвращает
.
-
true
- если оба операнда равны или одинаковы -
false
- если операнды не равны
Например,
int x = 10;
int y = 15;
int z = 10;
x == y // ложь
x == z // правда
Примечание: Оператор отношения ==
- это не то же самое, что оператор присваивания =
.Оператор присваивания =
присваивает значение переменной, константе, массиву или вектору. Он не сравнивает два операнда.
! = Оператор
Оператор не равно ! =
возвращает
-
true
- если оба операнда не равны -
false
- если оба операнда равны.
Например,
int x = 10;
int y = 15;
int z = 10;
x! = y // верно
x! = z // ложь
> Оператор
Оператор больше >
возвращает
-
true
- если левый операнд больше правого -
false
- если левый операнд меньше правого
Например,
int x = 10;
int y = 15;
x> y // ложь
y> x // истина
<Оператор
Оператор «меньше» <
возвращает
-
true
- если левый операнд меньше правого -
ложь
- если левый операнд больше правого
Например,
int x = 10;
int y = 15;
x
> = Оператор
Оператор больше или равно > =
возвращает
-
true
- если левый операнд больше или равен правому -
false
- если левый операнд меньше правого
Например,
int x = 10;
int y = 15;
int z = 10;
x> = y // ложь
y> = x // правда
z> = x // правда
<= Оператор
Оператор «меньше или равно» <=
возвращает
.
-
true
- если левый операнд меньше или равен правому -
ложь
- если левый операнд больше правого
Например,
int x = 10;
int y = 15;
x> y // ложь
y> x // истина
Чтобы узнать, как реляционные операторы могут использоваться со строками, обратитесь к нашему руководству здесь.
Логические операторы C ++
Мы используем логические операторы, чтобы проверить, является ли выражение истинным или ложным . Если выражение истинно , оно возвращает 1 , тогда как если выражение ложно , оно возвращает 0 .
Оператор | Пример | Значение |
---|---|---|
&& | выражение1 && выражение 2 | Логический И. истина, только если все операнды верны. |
|| | выражение1 || выражение 2 | Логическое ИЛИ. истина, если хотя бы один из операндов истинен. |
! | ! выражение | Логическое НЕ. истина, только если операнд ложный. |
Оператор логического И в C ++
Оператор логического И &&
возвращает
.
-
true
- если и только если все операндыtrue
. -
false
- если один или несколько операндов являютсяfalse
.
Таблица истинности оператора &&
Пусть a и b будут двумя операндами. 0 представляет ложных , а 1 представляет истинных . Затем
а | б | a && b |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Как видно из приведенной выше таблицы истинности, оператор &&
возвращает истину только в том случае, если оба значения a
и b
истинны.
Примечание. Оператор логического И && не следует путать с оператором побитового И &.
Пример 1: C ++ Оператор OR
// Программа на C ++, демонстрирующая таблицу истинности оператора &&
#include
используя пространство имен std;
int main () {
int a = 5;
int b = 9;
// ложь && ложь = ложь
cout << ((a == 0) && (a> b)) << endl;
// ложь && истина = ложь
cout << ((a == 0) && (a b)) << endl;
// истина && истина = истина
cout << ((a == 5) && (a
Выход
0 0 0 1
В этой программе мы объявляем и инициализируем две переменные int
a и b со значениями 5
и 9
соответственно.Затем выводим логическое выражение
((a == 0) && (a> b))
Здесь a == 0
оценивается как false
, поскольку значение a равно 5
. a> b
также является ложным
, поскольку значение a меньше, чем значение b . Затем мы используем оператор И &&
, чтобы объединить эти два выражения.
Из таблицы истинности оператора &&
мы знаем, что false && false
(т.е. 0 && 0
) приводит к оценке ложного
( 0
). Это результат, который мы получаем на выходе.
Аналогичным образом мы вычисляем три других выражения, которые полностью демонстрируют таблицу истинности оператора &&
.
Оператор логического ИЛИ в C ++
Оператор логического ИЛИ ||
возвращает
-
true
- если один или несколько операндов равныtrue
. -
false
- если и только если все операндыfalse
.
Таблица истинности || Оператор
Пусть a и b будут двумя операндами. Затем
а | б | a || б |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Как видно из приведенной выше таблицы истинности, || Оператор
возвращает false, только если оба значения a
и b
ложны.
Пример 2: Оператор OR в C ++
// Демонстрация программы на C ++ || таблица истинности операторов
#include
используя пространство имен std;
int main () {
int a = 5;
int b = 9;
// ложь && ложь = ложь
cout << ((a == 0) || (a> b)) << endl;
// ложь && истина = истина
cout << ((a == 0) || (a b)) << endl;
// истина && истина = истина
cout << ((a == 5) || (a
Выход
0 1 1 1
В этой программе мы объявляем и инициализируем две переменные int
a и b со значениями 5
и 9
соответственно.Затем выводим логическое выражение
((a == 0) || (a> b))
Здесь a == 0
оценивается как false
, поскольку значение a равно 5
. a> b
также является ложным
, поскольку значение a меньше, чем значение b . Затем мы используем оператор ИЛИ ||
, чтобы объединить эти два выражения.
Из таблицы истинности ||
, мы знаем, что ложь || ложный
(т.е. 0 || 0
) приводит к оценке ложных
( 0
). Это результат, который мы получаем на выходе.
Аналогичным образом мы вычисляем три других выражения, которые полностью демонстрируют таблицу истинности ||
оператор.
Оператор логического НЕ в C ++!
Логический оператор НЕ !
- унарный оператор, т.е. принимает только один операнд.
Он возвращает true , когда операнд false , и false , когда операнд true .
Таблица Правды! Оператор
Пусть a будет операндом. Затем
Пример 3: C ++! Оператор
// Демонстрация программы на C ++! таблица истинности операторов
#include
используя пространство имен std;
int main () {
int a = 5;
//! false = true
cout <
Выход
1 0
В этой программе мы объявляем и инициализируем переменную int
a со значением 5
.Затем выводим логическое выражение
! (А == 0)
Здесь a == 0
оценивается как false
, поскольку значение a равно 5
. Однако мы используем оператор НЕ !
по а == 0
. Поскольку a == 0
оценивается как false
, ! Оператор
инвертирует результаты a == 0
, и окончательный результат будет true
.
Аналогично, выражение ! (A == 5)
в конечном итоге возвращает false
, потому что a == 5
равно true
.
Логические операторы в C # .Net
В этом посте asp.net c # мы изучим логические операторы на примере.
Логические операторы в C # .Net
Язык C # поддерживает три основных логических оператора. Логические операторы возвращают true или false в качестве вывода.
Логические операторы используются, когда у нас есть условный оператор, такой как оператор if.
C # Поддерживает следующие логические операторы
Предположим, что переменная X истинна, а переменная Y ложна, тогда
ID | ОПЕРАТОР | ДЕТАЛЬ | ПРИМЕР |
---|---|---|---|
1 | && | логический И | если (X && Y), то ложь |
2 | || | Логическое ИЛИ | если (X || Y), то верно |
3 | ! | Логическое НЕ | , если! (X && Y), то верно |
Логический оператор &&
Логический оператор && произносится как оператор И.Он возвращает истину, если оба или все условия истинны, и возвращает ложь, если одно из условий ложно.
Предположим, что переменная int X = 10 и переменная Y = 5, тогда
, если (X = 10 && Y = 4)
{
Результат = «Истина»;
}
else
{
Результат = «Ложь»;
}
Здесь вывод: Результат = «Ложь» , потому что второе условие Y = 4 неверно.
Пример логического оператора && в Visual Studio с языком C #.
Создайте веб-форму, как показано на экране ниже, с двумя текстовыми полями, кнопкой и надписью.Текстовое поле для имени пользователя и пароля и управление меткой для отображения результата.
Здесь мы предполагаем, что имя пользователя = «meera» и пароль = «123 ″, когда мы пытаемся войти в систему с тем же именем пользователя и паролем, которые мы предполагали, затем возвращаем сообщение, такое как добро пожаловать в систему, другое мудрое сообщение об ошибке, такое как недопустимые учетные данные.
Логический пример оператора && AND в C #
Здесь мы используем оператор && в условии if для проверки правильности или неправильности имени пользователя и пароля. В приведенном выше примере c # .net сначала мы вводим username = meera и password = 123 , затем результат: Welcome to System , и когда мы пытаемся username = meera и password = 234 , результатом будет Invalid Credential , потому что значение пароля неверно, как мы предполагаем.
Код C # для примера выше:
Пример логического оператора && в логическом операторе C #
||
Логический || оператор произносится как оператор ИЛИ в C #.
Как мы узнали выше, если мы используем оператор &&, тогда оба условия должны быть истинными, но в || или оператор одно из условий истинно из всех, он отобразит сообщение «Добро пожаловать в систему».
Логический || Пример оператора ИЛИ в C #
Код C # для примера выше
с использованием системы;
используя System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
открытый частичный класс Opertorss: System.Web.UI.Page
{
protected void Page_Load (отправитель объекта, EventArgs e)
{
}
protected void btnlogin_Click (отправитель объекта, EventArgs e)
{
если (txtuname.Text == "meera" || txtupass.Text == "123")
{
lblmsg.Text = "Добро пожаловать в систему";
}
еще
{
lblmsg.Text = "Недействительные учетные данные";
}
}
}
Логический оператор!
Логический оператор! произносится как оператор НЕ в C #.
Если условие истинно, то оператор логического НЕ возвращает ложь.
Предположим, что переменная int X = 10 и переменная Y = 5, тогда
if (X! = Y)
{
result = «X не равно Y»;
}
else
{
result = «X равно Y»;
}
Здесь вывод: результат = «X не равно Y» , потому что значения X и Y не совпадают, поэтому верните блок true.
Мы надеемся, что это руководство по asp.net помогло вам разобраться в логических операторах в C #.
В следующем туториале asp.net мы узнаем об операторах отношения.
Математические операции и элементарные функции · Язык Julia
- Julia Документация
- Руководство
- Начало работы
- Переменные
- Целые числа и числа с плавающей запятой
- Математические операции и элементарные функции
- Побитовые операторы
- Арифметические операции
- Операторы обновления
- Векторизованные операторы с точками
- Числовые сравнения
- Приоритет и ассоциативность операторов
- Числовые преобразования
- Комплексные и рациональные числа
- Строки
- Параметры
- Функции
- Управление потоком функций Типы
- Методы
- Конструкторы
- Преобразование и продвижение
- Интерфейсы
- Модули
- Документация
- Метапрограммирование
- Многомерные массивы
- Отсутствующие значения 90 146
- Сеть и потоки
- Параллельные вычисления
- Асинхронное программирование
- Многопоточность
- Многопроцессорность и распределенные вычисления
- Запуск внешних программ
- Вызов кода среды C и Fortran
- Обработка вариаций операционной системы14
- Встраивание кода Julia
- Загрузка кода
- Профилирование
- Трассы стека
- Советы по производительности
- Советы по рабочему процессу
- Руководство по стилю
- Часто задаваемые вопросы
- Заслуживающие внимания отличия от других языков
- 143 Входные данные Unicode
Essentials
90 ation
- Base64
Распределенные файлы CRC143
Распределенные файлы CRC32c Вычисления
n и самоанализ
- Инициализация среды выполнения Julia
- AST Джулии
- Подробнее о типах
- Макет памяти объектов Julia
- Код Eval of Julia
- Общие правила вызова
процесс генерации собственного кода
: meta
)Правильное обслуживание и уход за многопоточными замками
- Отчетность и анализ сбоев (segfaults)
- Советы по отладке gdb
- Использование Valgrind с Julia
- Поддержка Sanitizer
Версия
Logical Graphs - OeisWiki 9000 Logical Graphs (OeisWiki)
Логический граф - это теоретико-графовая структура в одной из систем графического синтаксиса, разработанных Чарльзом Сандерсом Пирсом для логики.
В своих работах по качественной логике, , энтуитивных графах, и экзистенциальных графах, , Пирс разработал несколько версий графического формализма или теоретико-графического формального языка, предназначенного для интерпретации в логике.
За столетие, прошедшее после того, как Пирс инициировал эту линию развития, множество формальных систем разветвились от того, что абстрактно является той же самой формальной базой теоретико-графовых структур. В этой статье исследуется общая основа этих формальных систем с высоты птичьего полета, уделяя особое внимание тем аспектам формы, которые являются общими для всего семейства алгебр, исчислений или языков, независимо от того, как они используются в данном приложении.
Абстрактная точка зрения
Wollust ward dem Wurm gegeben… | |
- Фридрих Шиллер, An die Freude |
Рассматриваемая точка зрения с высоты птичьего полета более формально известна как перспектива формальной эквивалентности, убрав ее, невозможно увидеть многие различия, которые кажутся важными на более низких уровнях абстракции. В частности, выражения различных формализмов, синтаксические структуры которых изоморфны с точки зрения алгебры или топологии, не признаются как отличные друг от друга в каком-либо значимом смысле.Хотя мы можем мимоходом отметить такие исторические подробности, как то обстоятельство, что Чарльз Сандерс Пирс использовал символ с лентой и крестом , а Джордж Спенсер Браун использовал квадратный маркер плотника , тема, представляющая основной интерес на абстрактном уровне формы, нейтральна. что касается вариаций этого порядка.
Вместо начала
Рассмотрим формальные уравнения, показанные на рисунках 1 и 2.
(1) | |
(2) |
В настоящее время эти две формы преобразования могут называться аксиомами или исходными уравнениями .
Двойственность: логическая и топологическая
Есть два типа двойственности, которые следует учитывать отдельно при использовании логических графов - логическая двойственность и топологическая двойственность.
Существует стандартный способ, которым графы того порядка, который рассматривал Пирс, встроенные в непрерывное многообразие, подобное тому, которое обычно представляет собой плоский лист бумаги, - с бумажными мостиками, которые Пирс использовал для расширения своего топологического рода или без них, - могут быть представлены в линейном тексте как так называемые строки синтаксического анализа или строки обхода и проанализированы в структуры указателей в памяти компьютера.{\ prime \ prime} \!} или выделите на текстовом дисплее следующим образом:
(~ (~) ~) {\ displaystyle {\ texttt {(~ (~) ~)}} \!} | = {\ displaystyle = \!} |
Когда мы переходим к представлению соответствующих выражений в памяти компьютера, где ими можно манипулировать с максимальной легкостью, мы начинаем с преобразования плоских графов в их топологические двойники. Плоские области исходного графа соответствуют узлам (или точкам) двойного графа, а границы между плоскими областями исходного графа соответствуют ребрам (или линиям) между узлами двойного графа.
Например, наложив соответствующие дуальные графы на показанные выше плоские графы, мы получим следующую составную картину:
(4) |
Хотя на самом деле этого нет в самой абстрактной топологии вопроса, по разным прагматическим причинам мы вынуждены выделять наиболее удаленную область плоскости отличительным образом и отмечать ее как корневой узел . соответствующего дуального графа.В настоящем стиле рисунка корневые узлы отмечены горизонтальными сквозными штрихами.
Извлекая двойственные графы из их составных матриц, мы получаем такую картину:
.