2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
 
 Re: Сложение и другие арифметические операции
Сообщение13.04.2018, 17:35 
Заслуженный участник
Аватара пользователя


16/07/14
9264
Цюрих
Ну вот эти "тупо провода" - это и есть выделяющие элементы. Важно, что функций $\bigvee_n, \bigwedge_n: \mathbb{Z}_2^n \to \matbb{Z}_2$ и $\neg: \mathbb{Z}_2 \to \mathbb{Z}_2$ нам недостаточно.

 Профиль  
                  
 
 Re: Сложение и другие арифметические операции
Сообщение13.04.2018, 17:44 
Заслуженный участник


20/08/14
11902
Россия, Москва
Простите, но логические элементы без их соединения между собой (проводами) - нонсенс, никому такое не нужно! Ведь ни задать входные значения на каждый логический элемент, ни узнать выходные (вычисленные значения функций) - невозможно. Вы даже исходные числа не сможете подать на логические элементы. Натуральный сферический конь в вакууме.
И да, слово "выделение" тут кажется неуместным, соединяющий два логических элемента провод ничего не выделяет (один объект из множества), он лишь соединяет два объекта между собой. И уж точно провод ничего не "сливает" (в строку или куда-то ещё). Так что кроме самих логических элементов разумеется нужны ещё и соединения между ними, но это вроде не является операцией.

 Профиль  
                  
 
 Re: Сложение и другие арифметические операции
Сообщение13.04.2018, 18:40 
Заслуженный участник


27/04/09
28128
Возьмём, допустим, однобитный сумматор с тремя входами $A,B,C$ и выходами $S',C'$ ($C'$ — перенос в старший разряд, $C$ — перенос из предыдущего). Он реализуется как $S = A\oplus B\oplus C, C' = A\wedge B\vee A\wedge C\vee B\wedge C$. Пока проблем никаких нет. Скомпонуем теперь несколько таких сумматоров $(S,C') = s(A,B,C)$: пусть есть входы $A_1,B_1,\ldots,A_n,B_n$ и выходы $S_1,\ldots,S_n,C_{n+1}$, и пусть $(S_i,C_{i+1}) = s(A_i,B_i,C_i)$, где $C_1 = 0$. Каждый из выходов всё так же остаётся выразим булевой функцией входов, как можно убедиться подстановками.

Если возражения в том, что для выражения произвольной булевой функции через $\vee,\wedge,neg$ нужны не только композиции, но и проекции и (только в случае функций нуля аргументов) константы или какой-то способ избавиться от аргумента, от которого функция не зависит, то это всё подразумевается имеющимся, когда говорят о выразимости. (По-моему, это общее место в вопросах выразимости: разумеется, одних только композиций будет хватать только в исключительно скучных случаях.) Если проблема и не в этом, то, по-моему, не одному мне неясно, в чём.

 Профиль  
                  
 
 Re: Сложение и другие арифметические операции
Сообщение13.04.2018, 19:40 
Аватара пользователя


17/04/11
658
Ukraine
Извините, но цифровая электроника к теме совсем не относится.

 Профиль  
                  
 
 Re: Сложение и другие арифметические операции
Сообщение13.04.2018, 22:23 
Заслуженный участник
Аватара пользователя


23/07/05
18013
Москва
Я уточняю. Логические операции — это операции на некоторой булевой алгебре. Причём, не какие угодно, какие можно придумать, а вполне определённые: дизъюнкция, конъюнкция, отрицание (и всё, что через них можно определить).
Поэтому берём булеву алгебру $\mathbb Z_2^n$ со стандартными поразрядными логическими операциями и пытаемся реализовать прибавление единицы. Мне одному кажется очевидным, что, располагая только поразрядными операциями, нельзя реализовать перенос в другой разряд?

Более общая постановка. Имеется абстрактная булева алгебра. Можно ли вложить в неё модель натурального ряда так, чтобы операция прибавления единицы выражалась через операции в булевой алгебре? Наводящий вопрос: сколько элементов содержит булева алгебра с двумя образующими?

 Профиль  
                  
 
 Re: Сложение и другие арифметические операции
Сообщение13.04.2018, 23:01 
Заслуженный участник


20/08/14
11902
Россия, Москва
Someone
Простите, а может ли произвольная логическая функция $F_i, i \in 1..n$ зависеть не только исключительно от $i$-х аргументов, но и от каких-нибудь ещё (например $i-1, i+1, 2i$)? Если нет и конструкции типа $F_i=A_i \vee B_{i-1}$ недопустимы из-за несовпадения индексов, то да, засада. Только почему не может то?
А если может, то перенос получается по вышеприведённой формуле: $C_i=A_i \wedge B_i \vee (A_i \vee B_i) \wedge C_{i-1}, C_0=0, i=1..n$. Для любого конечного $n$ её можно расписать и без индексов, просто получится очень длинно. Но ничего кроме логических функций ($\wedge, \vee$) не понадобится.

 Профиль  
                  
 
 Re: Сложение и другие арифметические операции
Сообщение13.04.2018, 23:13 
Заслуженный участник
Аватара пользователя


23/07/05
18013
Москва
Dmitriy40 в сообщении #1304013 писал(а):
Простите, а может ли произвольная логическая функция $F_i, i \in 1..n$ зависеть не только исключительно от $i$-х аргументов, но и от каких-нибудь ещё (например $i-1, i+1, 2i$)? Если нет и конструкции типа $F_i=A_i \vee B_{i-1}$ недопустимы из-за несовпадения индексов, то да, засада. Только почему не может то?
Никогда не видел логических команд, которые были бы не поразрядными. Для реализации сумматора нужен доступ к отдельным разрядам и возможность их комбинировать достаточно нетривиальным образом.

Рассмотрите абстрактную постановку, в которой никакие разряды вообще не упоминаются.

 Профиль  
                  
 
 Re: Сложение и другие арифметические операции
Сообщение13.04.2018, 23:22 
Заслуженный участник


20/08/14
11902
Россия, Москва
Даже распишу, вместе с суммами, для $n=3$:
$C_1=A_1 \wedge B_1$, $S_1=A_1 \oplus B_1$
$C_2=A_2 \wedge B_2 \vee (A_2 \vee B_2) \wedge (A_1 \wedge B_1)$, $S_2=A_2 \oplus B_2 \oplus (A_1 \wedge B_1)$
$C_3=A_3 \wedge B_3 \vee (A_3 \vee B_3) \wedge (A_2 \wedge B_2 \vee (A_2 \vee B_2) \wedge (A_1 \wedge B_1))$, $S_3=A_3 \oplus B_3 \oplus (A_2 \wedge B_2 \vee (A_2 \vee B_2) \wedge (A_1 \wedge B_1))$
И так далее (надеюсь не опечатался). Не вижу никакой проблемы в выражении ни переносов, ни сумм.

Someone в сообщении #1304019 писал(а):
Никогда не видел логических команд, которые были бы не поразрядными.
Логические команды очевидным образом не привязаны к разрядам, они могут зависеть от любых имеющихся переменных (например разрядов чисел). Тогда уж и перемножение матриц запрещайте, там ведь тоже в результирующей матрице индексы матриц аргументов вперемешку. Впечатление что и Вы и другие путаете понятия разряда числа и понятие бита (битовой переменной). И я не понимаю что мешает задавать логические функции на всём имеющемся множестве переменных, вне зависимости к каким числам или разрядам они относятся. И почему Вы насильно хотите ограничить например сложение векторов только и исключительно покомпонентным сложением, без перекрёстных зависимостей между компонентами с разными индексами (да, это не будет сложением векторов, но это будет допустимой математической операцией, в частности логической).
Насчёт абстрактной постановки это не ко мне. Возьмите три вектора $A, B, C$ одинакового размера $n$ и определите на них операцию $C_i=A_i \vee B_i \wedge B_{i-1}, B_0=1, i=1..n$. Это по Вашему не логическая операция? А по моему вполне себе логическая операция.

 Профиль  
                  
 
 Re: Сложение и другие арифметические операции
Сообщение13.04.2018, 23:28 
Заслуженный участник


27/04/09
28128
Someone в сообщении #1304005 писал(а):
Я уточняю. Логические операции — это операции на некоторой булевой алгебре. Причём, не какие угодно, какие можно придумать, а вполне определённые: дизъюнкция, конъюнкция, отрицание (и всё, что через них можно определить).
Поэтому берём булеву алгебру $\mathbb Z_2^n$ со стандартными поразрядными логическими операциями и пытаемся реализовать прибавление единицы. Мне одному кажется очевидным, что, располагая только поразрядными операциями, нельзя реализовать перенос в другой разряд?
С такой постановкой не одному вам, но почему брать такую постановку? Операции отдельными байтами вполне встречаются в процессорах — часто используются флаговые регистры, отдельные биты которых устанавливаются при вычислениях и могут быть проверены выполнением какой-то инструкции. Остаётся только растащить элементы $\mathbb Z_2^n$ на отдельные биты и рассматривать функции от них.

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

(Моё дилетантское понимание, процессоров не делал.)

 Профиль  
                  
 
 Re: Сложение и другие арифметические операции
Сообщение13.04.2018, 23:37 
Заслуженный участник


20/08/14
11902
Россия, Москва
Так, я извиняюсь, кажется дошло в чём путаница.
Есть логический базис (к примеру И-НЕ), есть порязрядные логические операции (которые именно что не зависят от других разрядов в отличии от произвольной логической функции) и есть реализуемость произвольной логической функции в логическом базисе. Поразрядные логические операции так и называются потому что не зависят от прочих разрядов. И в них разумеется переносы не выражаются. Но это узкое подмножество всех логических операций! Тем не менее любые логические функции полностью описываются в терминах логического базиса.
А изначально про поразрядность речи не было, сказано было просто "логические функции", не ограничивая их только поразрядными. Соответственно и утверждения mihaild там дальше тоже неверны, т.к. под произвольными логическими функциями неявно подразумевались лишь исключительно поразрядные.

 Профиль  
                  
 
 Re: Сложение и другие арифметические операции
Сообщение13.04.2018, 23:39 
Заслуженный участник


27/04/09
28128
Да, поразрядные булевы операции, имеющиеся часто в процессорах, не должны быть связаны с упоминаемой выразимостью. Зачем им?

Вообще в длине этого обсуждения очевидно виноват начавший его Chifu, невнятно описавший утверждение. Я как раз следующим постом тогда и намекнул на это, но вышло что вышло, и, самое главное, без малейшего его участия. Зачем опровергать в деталях смутно сформулированные предложения, честно говоря, не знаю — не лучше ли подождать, захочет ли их автор их очертить яснее, или стоит лучше воспринимать пост как мысли вслух.

 Профиль  
                  
 
 Re: Сложение и другие арифметические операции
Сообщение13.04.2018, 23:52 
Заслуженный участник
Аватара пользователя


23/07/05
18013
Москва
Dmitriy40 в сообщении #1304023 писал(а):
но это будет допустимой математической операцией, в частности логической
Ещё раз: рассмотрите абстрактную постановку задачи, в которой никакие разряды вообще не упоминаются:
Someone в сообщении #1304005 писал(а):
Имеется абстрактная булева алгебра. Можно ли вложить в неё модель натурального ряда так, чтобы операция прибавления единицы выражалась через операции в булевой алгебре? Наводящий вопрос: сколько элементов содержит булева алгебра с двумя образующими?
Предположим, что мы каким-то образом вложили начальный отрезок натурального ряда из $M$ элементов в булеву алгебру так, что в пределах этого отрезка сумма $a+b$ выражается какой-то логической функцией $f(a,b)$, определяемой, естественно, через логические операции $\vee$, $\wedge$, $\neg$. Пусть натуральным числам $0$ и $1$ соответствуют элементы булевой алгебры $o$ и $e$. Тогда все элементы $a_0=o$, $a_1=f(a_0,e)$, $a_2=f(a_1,e)$, $a_3=f(a_2,e)$,… принадлежат булевой подалгебре, порождённой двумя элементами $o$ и $e$, и, следовательно, весь наш отрезок натурального ряда вложен в эту подалгебру.

arseniiv в сообщении #1304026 писал(а):
С такой постановкой не одному вам, но почему брать такую постановку? Операции отдельными байтами вполне встречаются в процессорах — часто используются флаговые регистры, отдельные биты которых устанавливаются при вычислениях и могут быть проверены выполнением какой-то инструкции. Остаётся только растащить элементы $\mathbb Z_2^n$ на отдельные биты и рассматривать функции от них.
Я о том и говорю, что, помимо логических операций, нужны операции доступа к отдельным битам. В булевой алгебре таких операций нет, поэтому они логическими не являются.

 Профиль  
                  
 
 Re: Сложение и другие арифметические операции
Сообщение14.04.2018, 00:14 
Заслуженный участник


20/08/14
11902
Россия, Москва
Someone в сообщении #1304032 писал(а):
Я о том и говорю, что, помимо логических операций, нужны операции доступа к отдельным битам. В булевой алгебре таких операций нет, поэтому они логическими не являются.
Простите, а что вообще есть в булевой алгебре кроме битов и логических операций? И почему нельзя более сложные вещи формально преобразовать к этим типам (битам и логическим операциям над битами)? Откуда в булевой алгебре вылезает понятие разрядности или неэквивалентности битов между собой? Я как бы считал что в логическую функцию можно включить любой из имеющихся битов, вне зависимости кому и чему он якобы "принадлежит". Или в булевой алгебре и битов нету? :facepalm:
Ну или по другому, мне казалось в булевой алгебре задаются правила преобразования вектора состояния из начального (предыдущего) состояние в следующее (конечное). А вектор состояния - просто упорядоченная куча битов, вектор, массив. И на числа или разряды он делится лишь нами при интерпретации хранящейся в нём информации, но никоим образом не правилами самой булевой алгебры. Соответственно любая логическая функция может использовать в аргументе любой бит из этого вектора состояния. Почему нет то?!
Да, я не понимаю почему запись "$...=A_2$" означает какую-то "операцию выбора бита", а запись "$C_3=...$" какую-то "операцию вставки бита". По моему это просто запись аргумента и результата логической операции.

 Профиль  
                  
 
 Re: Сложение и другие арифметические операции
Сообщение14.04.2018, 00:22 
Заслуженный участник


27/04/09
28128
Someone
Но зачем рассматривать именно булеву алгебру $\mathbb Z_2^n$ для $n\ne1$? Кто к этому принуждает?

-- Сб апр 14, 2018 02:28:08 --

Dmitriy40 в сообщении #1304040 писал(а):
Простите, а что вообще есть в булевой алгебре кроме битов и логических операций?
Ну, формально, алгебра с носителем из двух элементов не самая главная из всех булевых. Просто так вышло, что в практических кругах лишь о ней известно, что она булева, а про остальные не задумываются. На самом же деле возможны даже булевы алгебры, не изоморфные никакой степени $(\mathbb Z_2)^A$ для произвольного множества $A$. Впрочем, эти-то в нашем контексте совсем не у дел, как и остальные бесконечные.

Хотя, кстати, булевы функции вроде бы определяются всё равно только как функции $\mathbb Z_2^n\to\mathbb Z_2$. :|

 Профиль  
                  
 
 Re: Сложение и другие арифметические операции
Сообщение14.04.2018, 00:35 
Заслуженный участник
Аватара пользователя


16/07/14
9264
Цюрих
mihaild в сообщении #1303874 писал(а):
Тут нужно уточнить, что мы понимаем под "чисто логическими операциями"

Можно рассматривать булеву алгебру (как решётку с дополнительной операцией $\neg$). Что и предлагает Someone.
Можно взять стандартные логические функции и разрешить устраивать их композицию, и считать что либо на вход нам подается просто $2n$ аргументов, задающих биты, и мы просто объявляем, что некоторые из результатов функций идут на выход, либо что у нас дополнительно есть функции, выделяющие из $n$-битной строки определенные биты, и у нас есть функция, которая из $n$ бит делает одну $n$-битовую строку - и из всего этого можно просто явно выразить функцию из пары $n$-битных строк в $n+1$-битную.

Это неинтересные технические вопросы, но нужно всё же зафиксировать определения прежде чем что-то обсуждать.
(при условии, что тут вообще нужно что-то обсуждать, в чем я сомневаюсь)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 99 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group