Лингвофорум

Общий раздел => Наука и техника => Математика => Тема начата: mnashe от июля 2, 2015, 10:53

Название: *Математика и программирование
Отправлено: mnashe от июля 2, 2015, 10:53
Цитата: Даниэль от июля  2, 2015, 00:32
Я, например, отлично понимаю, что программирование - намного более низкий уровень интеллектуального развития, чем чистая математика, и знаю, что в свое время просто "не потянул".
Ты напомнил мне недавнюю историю.
Передо мной встала задача: расположить все 20 возможных сочетаний двух чисел из пяти (порядок в паре имеет значение) по кругу так, чтобы рядом (включая диагональ) не оказывались одинаковые числа.
Пример решения для 5 сочетаний:
1 3 5 2 4
2 4 1 3 5
Но нужно уложить все 20.
Я пару часов пытался решить эту задачу в уме. Ничего не получалось.
Потом я взял двухцветные палочки и стал пытаться сложить из них. Провозился ещё полтора часа, ничего не вышло, я предположил, что задача неразрешима, но доказать этого не смог.
На следующий день я за пару часов написал программу из 70 строчек, и она мне менее чем за минуту выдала 38568 решений!
(Причём программа работает в виртуальной машине вроде явы, что заведомо снижает скорость как минимум на порядок).
Spoiler: программа ⇓⇓⇓
Название: *Математика и программирование
Отправлено: From_Odessa от июля 2, 2015, 10:58
Цитата: Даниэль от июля  2, 2015, 00:32
Я, например, отлично понимаю, что программирование - намного более низкий уровень интеллектуального развития, чем чистая математика, и знаю, что в свое время просто "не потянул". При этом, на самом деле, я немного занимаюсь математикой, но я отчетливо понимаю: в целом математика труднее и интеллектуально выше, чем моя профессия.
Мне кажется, тут не все так просто. На самом деле, программирование, как мне кажется, это вообще отдельная отрасль, по сути, хоть ее и называют прикладной математикой. Программирование нередко требует тех умений и склонностей, которые "чистая" математика требует в меньшей степени. Умение создавать алгоритмы, алгоритмически мыслить, умение, охватывать программу взором и выделять в ней ошибки и нерациональности - это особая сфера. И великолепный "чистый" математик может быть к этому не так уж склонен. Программирование, я бы сказал, в определенные моменты превращается в искусство. Мне кажется, что математическое мышление и алгоритмические - это разные вещи. Я понимаю, что Вы хотите сказать, понимаю, что в глубине своей математика требует очень мощные интеллектуальные способности. Я просто хотел сказать, что такое сравнение лоб в лоб не очень верно, как мне видится.
Название: *Математика и программирование
Отправлено: mnashe от июля 2, 2015, 11:06
Цитата: From_Odessa от июля  2, 2015, 10:58
На самом деле, программирование, как мне кажется, это вообще отдельная отрасль, по сути, хоть ее и называют прикладной математикой. Программирование нередко требует тех умений и склонностей, которые "чистая" математика требует в меньшей степени. Умение создавать алгоритмы, алгоритмически мыслить, умение, охватывать программу взором и выделять в ней ошибки и нерациональности - это особая сфера. И великолепный "чистый" математик может быть к этому не так уж склонен. Программирование, я бы сказал, в определенные моменты превращается в искусство. Мне кажется, что математическое мышление и алгоритмические - это разные вещи. Я понимаю, что Вы хотите сказать, понимаю, что в глубине своей математика требует очень мощные интеллектуальные способности. Я просто хотел сказать, что такое сравнение лоб в лоб не очень верно, как мне видится.
Ага.
Название: *Математика и программирование
Отправлено: Lodur от июля 2, 2015, 12:51
Цитата: From_Odessa от июля  2, 2015, 10:58Мне кажется, тут не все так просто. На самом деле, программирование, как мне кажется, это вообще отдельная отрасль, по сути, хоть ее и называют прикладной математикой.
Как-то читал у кого-то из великих американских программистов (не помню, у кого... то ли создателя Паскаля, то ли создателя Си), что программирование отнесено к прикладной математике по ошибке. На самом деле, это область прикладной лингвистики, и из линвистов получаются намного лучшие программисты, чем из математиков. :) Мысль парадоксальна, но только на первый взгляд.
Название: *Математика и программирование
Отправлено: Даниэль от июля 2, 2015, 14:43
Цитата: mnashe от июля  2, 2015, 10:53
Цитата: Даниэль от июля  2, 2015, 00:32
Я, например, отлично понимаю, что программирование - намного более низкий уровень интеллектуального развития, чем чистая математика, и знаю, что в свое время просто "не потянул".
Ты напомнил мне недавнюю историю.
Передо мной встала задача: расположить все 20 возможных сочетаний двух чисел из пяти (порядок в паре имеет значение) по кругу так, чтобы рядом (включая диагональ) не оказывались одинаковые числа.
Пример решения для 5 сочетаний:
1 3 5 2 4
2 4 1 3 5
Но нужно уложить все 20.
Я пару часов пытался решить эту задачу в уме. Ничего не получалось.
Потом я взял двухцветные палочки и стал пытаться сложить из них. Провозился ещё полтора часа, ничего не вышло, я предположил, что задача неразрешима, но доказать этого не смог.
На следующий день я за пару часов написал программу из 70 строчек, и она мне менее чем за минуту выдала 38568 решений!
(Причём программа работает в виртуальной машине вроде явы, что заведомо снижает скорость как минимум на порядок).
Долго работает твоя программа :)

Математик сразу бы вспомнил про коды Грея (https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4_%D0%93%D1%80%D0%B5%D1%8F). За пару минут я уже нашел решение твоей задачи для сочетаний (http://e-maxx.ru/algo/generating_combinations). Остается сделать то же для размещений (твои комбинации называются размещениями из 5 элементов по 2 без повторений).

Проблема твоего примера в том, что он явно придуман искусственно. Если на практике встретится что-то подобное, то там будут не 2 цифры из 5, а, скажем, 4 цифры из 4 миллиардов. И без теории ты просто не сможешь написать программу, работающую приемлемое время.

В реальности, разумеется, программирование иногда помогает математике. Так, иногда случается, что доказать некую теорему в общем виде не удается, но можно доказать, скажем, что если она выполнена вот для такого количества частных случаев, то она верна всегда. И если повезет, случается, что этих частных случаев, во-первых, конечное число, а во-вторых, не астрономическое (вроде 10 в миллиардной степени). Чаще всего, собственно, это количество вообще измеряется единицами, и таким образом математика развивалась до появления компьютеров: их проверяли вручную. Сейчас же стало возможным выходить из положения также и в случае, когда их количество, допустим, триллионы. Если не ошибаюсь, это использовали при доказательстве теоремы Ферма. Я сам недавно именно так доказал важную для алгоритмики теорему: http://algart.net/ru/discrete_geometry/connectivity_theorem.html Правда, возникает еще один неизбежный (и неприятный с точки зрения доказательства) вопрос: правильность программы тоже нуждается в доказательстве.

В целом же, конечно, математика действительно царица, а программирование - лишь служанка.

Что же до нашего спора, может быть, попробуешь выражаться более нейтрально, без эмоций? У меня такое впечатление, что они (эмоции) несколько мешают адекватной дискуссии. Честное слово, твое жуткое понятие "фаллометрия" мне и в голову не приходило. Я и слова-то такого не знал.

Кстати, в порядке офтопика: я только что прочитал у Йешайаhу (20-я глава), что, оказывается, 5 городов Мицраима обратятся к Единому Богу и будут служить Ему, не больше и не меньше, вместо с Ашуром, а Исраэль для них будет третьим. Это пророчество когда-то сбылось? О чем рассказывает пророк? В моем комментарии про это ничего не сказано, может быть ты знаешь.
Название: *Математика и программирование
Отправлено: mnashe от июля 2, 2015, 15:58
Цитата: Даниэль от июля  2, 2015, 14:43
Математик сразу бы вспомнил про коды Грея. За пару минут я уже нашел решение твоей задачи для сочетаний. Остается сделать то же для размещений (твои комбинации называются размещениями из 5 элементов по 2 без повторений).
Ничего не понял :(
Ни что дают мне коды Грея, ни чем помогут решение задачи для сочетаний в решении задачи для размещений.

Цитата: Даниэль от июля  2, 2015, 14:43
Проблема твоего примера в том, что он явно придуман искусственно.
А вот и не угадал :)
Задача как раз-таки совершенно практическая.
Начну с самого начала.
Имеется трёминутный таймер. В ванной висит. Помогает детям чистить зубы три минуты.
Таймер бесконечный, как часы. «Циферблат» — 20 цветных светодиодов. В верхней половине — белый, красный, оранжевый, жёлтый, ЖЗ, белый, зелёный, СЗ, синий, сиреневый; в нижней половине то же самое в том же порядке. Нужно просто запомнить точку начала отсчёта и ждать возвращения в ту же точку.
Сейчас схема таймера такова: сигнал мультивибратора, построенного на элементе микросхемы триггера Шмидта 74HC14, поступает на вход микросхемы десятичного счётчика CD4017, последовательно переключающего 10 выходов, к каждому из которых подключено по два соседних светодиода. Второй вывод каждого нечётного светодиода подключается к выходу триггера Шмидта напрямую, а каждого чётного — туда же через инвертор. В результате получается, что первые 9 секунд горит первый светодиод в паре, вторые 9 секунд — второй, потом счётчик активирует следующую пару.
Название: *Математика и программирование
Отправлено: mnashe от июля 2, 2015, 15:58
Я хочу переделать схему так, чтобы она работала на микроконтроллере. На самом дешёвом, за 35 центов. У него 6 выводов (не считая питания): 5 входов-выходов и один только-вход.
Пять выводов могут переключать 20 светодиодов методом charlie-plexing (по имени изобретателя), где на каждое сочетание двух выходов МК вешается по два противоположно направленных светодиода. Чтобы выбрать пару, нужно всех выходы, кроме двух, относящихся к данной паре, переключить на вход («высокоимпедансное состояние», а на эти два подать либо плюс и минус, либо минус и плюс. Таким образом n выводов МК могут адресовать n•(n−1) светодиодов. На три вывода вешается 6 штук, на четыре — 12, на пять — 20.
Что мне даёт замена схемы управления?
Во-первых, можно избавиться от нужды в выключателе: микроконтроллер может автоматически выключаться через несколько кругов, а его потребление в режиме сна ничтожно. Можно поместить таймер в герметичной коробке и включать его встряхиванием или переворачиванием. Ну или просто кнопку нажимать, защитив её плёнкой.
Во-вторых, используя на выходе ШИМ, я могу сделать включение и выключение каждого светодиода плавным (программу на ассемблере для PIC написал уже давно).
В-третьих, у charlie-plexing, начиная с 4 выводов, есть «скрытая возможность» — можно включать одновременно два светодиода, если они висят на разных каналах. Например, одновременно с 1-2 можно включать 3-4 или 4-3 или 3-5 или 5-3.
Я хочу применить эту фичу для того, чтобы каждая фаза длилась не 9 секунд, а 4,5. Так интереснее смотрится.
1 Первый светодиод горит.
2 Первый и второй.
3 Второй.
4 Второй и третий.
5 Третий.
6 Третий и четвёртый.
...
39 Двадцатый.
40 Двадцатый и первый.
Вот отсюда и возникла описанная математическая задача.
Название: *Математика и программирование
Отправлено: _Swetlana от июля 2, 2015, 16:26
Цитата: mnashe от июля  2, 2015, 10:53
Цитата: Даниэль от июля  2, 2015, 00:32
Я, например, отлично понимаю, что программирование - намного более низкий уровень интеллектуального развития, чем чистая математика, и знаю, что в свое время просто "не потянул".
Ты напомнил мне недавнюю историю.
Передо мной встала задача: расположить все 20 возможных сочетаний двух чисел из пяти (порядок в паре имеет значение) по кругу так, чтобы рядом (включая диагональ) не оказывались одинаковые числа.
Пример решения для 5 сочетаний:
1 3 5 2 4
2 4 1 3 5
Но нужно уложить все 20.
Я пару часов пытался решить эту задачу в уме. Ничего не получалось.
Потом я взял двухцветные палочки и стал пытаться сложить из них. Провозился ещё полтора часа, ничего не вышло, я предположил, что задача неразрешима, но доказать этого не смог.
На следующий день я за пару часов написал программу из 70 строчек, и она мне менее чем за минуту выдала 38568 решений!
(Причём программа работает в виртуальной машине вроде явы, что заведомо снижает скорость как минимум на порядок).
Spoiler: программа ⇓⇓⇓
А если программа бы не выдала ни одного решения? Где гарантия, что их действительно нет?
Слабонервным под спойлер не лазить. Запутаетесь в жёнах, детях и мужьях.
Название: *Математика и программирование
Отправлено: Даниэль от июля 2, 2015, 16:32
Цитата: mnashe от июля  2, 2015, 15:58
Цитата: Даниэль от июля  2, 2015, 14:43
Математик сразу бы вспомнил про коды Грея. За пару минут я уже нашел решение твоей задачи для сочетаний. Остается сделать то же для размещений (твои комбинации называются размещениями из 5 элементов по 2 без повторений).
Ничего не понял :(
Ни что дают мне коды Грея, ни чем помогут решение задачи для сочетаний в решении задачи для размещений.
Коды Грея - просто самое близкое, первое, что приходит на ум. А через 5 минут Гугла становится ясно, что алгоритмы их генерации можно положить в основу генерации сочетаний, перестановок и размещений, если хочется, чтобы соседи отличались.

Цитата: mnashe от июля  2, 2015, 15:58
Цитата: Даниэль от июля  2, 2015, 14:43
Проблема твоего примера в том, что он явно придуман искусственно.
А вот и не угадал :)
Задача как раз-таки совершенно практическая.
Начну с самого начала.
Имеется трёминутный таймер. В ванной висит. Помогает детям чистить зубы три минуты.
Таймер бесконечный, как часы. «Циферблат» — 20 цветных светодиодов. В верхней половине — белый, красный, оранжевый, жёлтый, ЖЗ, белый, зелёный, СЗ, синий, сиреневый; в нижней половине то же самое в том же порядке. Нужно просто запомнить точку начала отсчёта и ждать возвращения в ту же точку.
Сейчас схема таймера такова: сигнал мультивибратора, построенного на элементе микросхемы триггера Шмидта 74HC14, поступает на вход микросхемы десятичного счётчика CD4017, последовательно переключающего 10 выходов, к каждому из которых подключено по два соседних светодиода. Второй вывод каждого нечётного светодиода подключается к выходу триггера Шмидта напрямую, а каждого чётного — туда же через инвертор. В результате получается, что первые 9 секунд горит первый светодиод в паре, вторые 9 секунд — второй, потом счётчик активирует следующую пару.
Жуть какая :) Мне казалось, такие развлечения ушли в прошлое лет 30 назад. А поди ж ты... Любители вроде тебя все еще такое конструируют.
Сейчас как-то более принято написать приложение на чем-нибудь вроде Objective C или Java, которая делает в точности то, что тебе нужно. И использовать какое-нибудь устройство, для которого такой язык - входной. Скоро, наверно, других микроустройств и вовсе не останется.

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

Мне вот сейчас пришлось решать задачу о поиске границы у нескольких перекрывающихся прямоугольников. Вполне себе реальная задача - современные микроскопы так себя ведут, снимают картинку серией прямоугольных кадров и потом склеивают их. А для экономии места подчас снимают не все подряд, а область, указанную пользователем (скажем, кусочек ткани). Кабы прямоугольников было три, тоже можно было бы решить "на пальцах". Но их, чаще всего, десятки тысяч. И снова без математики никуда. Соответствующая область геометрии так и называется - вычислительная геометрия, и по сути это именно математика: разработка алгоритма, для которого, во-первых, надо доказать, что он работает, а во-вторых, дать асимптотическую оценку, что он не затратит N^2 операций, но уложится, скажем, в N log N.
Название: *Математика и программирование
Отправлено: mnashe от июля 2, 2015, 16:38
Цитата: _Swetlana от июля  2, 2015, 16:26
А если программа бы не выдала ни одного решения? Где гарантия, что их действительно нет?
Это исключено, поскольку программа перебрала все возможные варианты (больше миллиарда — 1,147,715,240).
Название: *Математика и программирование
Отправлено: Даниэль от июля 2, 2015, 16:41
Цитата: _Swetlana от июля  2, 2015, 16:26
Цитата: mnashe от июля  2, 2015, 10:53
Цитата: Даниэль от июля  2, 2015, 00:32
Я, например, отлично понимаю, что программирование - намного более низкий уровень интеллектуального развития, чем чистая математика, и знаю, что в свое время просто "не потянул".
Ты напомнил мне недавнюю историю.
Передо мной встала задача: расположить все 20 возможных сочетаний двух чисел из пяти (порядок в паре имеет значение) по кругу так, чтобы рядом (включая диагональ) не оказывались одинаковые числа.
Пример решения для 5 сочетаний:
1 3 5 2 4
2 4 1 3 5
Но нужно уложить все 20.
Я пару часов пытался решить эту задачу в уме. Ничего не получалось.
Потом я взял двухцветные палочки и стал пытаться сложить из них. Провозился ещё полтора часа, ничего не вышло, я предположил, что задача неразрешима, но доказать этого не смог.
На следующий день я за пару часов написал программу из 70 строчек, и она мне менее чем за минуту выдала 38568 решений!
(Причём программа работает в виртуальной машине вроде явы, что заведомо снижает скорость как минимум на порядок).
Spoiler: программа ⇓⇓⇓
А если программа бы не выдала ни одного решения? Где гарантия, что их действительно нет?
Слабонервным под спойлер не лазить. Запутаетесь в жёнах, детях и мужьях.
:) Бывает. Хотя обычно программу написать легче, но только писать ее надо правильно: доказав перед этим, что она и правда перебирает все возможные замощения. Процесс такого доказательства нередко приводит к тому, что программа оказывается не нужна: замощение находится в процессе обдумывания, все ли варианты учла программа.

Скорее всего, эта задача (она же математикам предлагалась) допускала решение путем "просто подумать". Реально возникающие задачи обычно не так просты - там объемы входных данных очень велики. Но без математики все равно никуда: разработка правильного и быстрого алгоритма остается серьезной математической задачей. Разница примерно такая же, как между решением одного конкретного кубического уравнения, у которого есть целый корень, подобранный автором задачи (и тогда остается его угадать небольшим перебором и свести к квадратному), и между разработкой универсального метода Кардано. Первое - задача для математика-школьника, второе - для профессионала. Так обычно и с алгоритмами. Простое решение для специально подобранной задачи удается найти вручную, а в промышленной задаче с промышленными объемами данных нужен математик-профессионал, который разработает правильный алгоритм, докажет его корректность, оценит память и время, а затем запрограммирует и протестирует (здесь ему может помочь и программист).
Название: *Математика и программирование
Отправлено: Timiriliyev от июля 2, 2015, 16:47
Цитата: From_Odessa от июля  2, 2015, 10:58
Мне кажется, тут не все так просто. На самом деле, программирование, как мне кажется, это вообще отдельная отрасль, по сути, хоть ее и называют прикладной математикой. Программирование нередко требует тех умений и склонностей, которые "чистая" математика требует в меньшей степени. Умение создавать алгоритмы, алгоритмически мыслить, умение, охватывать программу взором и выделять в ней ошибки и нерациональности - это особая сфера. И великолепный "чистый" математик может быть к этому не так уж склонен. Программирование, я бы сказал, в определенные моменты превращается в искусство. Мне кажется, что математическое мышление и алгоритмические - это разные вещи. Я понимаю, что Вы хотите сказать, понимаю, что в глубине своей математика требует очень мощные интеллектуальные способности. Я просто хотел сказать, что такое сравнение лоб в лоб не очень верно, как мне видится.
Отличная мысль. Я-то думаю, почему чистое программирование, никаким боком не относящееся к математике, а больше к лингвистике, даётся мне относительно легко, а математика всегда давалась с трудом — видимо, тип мышления под неё не заточен.
Название: *Математика и программирование
Отправлено: Даниэль от июля 2, 2015, 16:48
Цитата: mnashe от июля  2, 2015, 16:38
Цитата: _Swetlana от июля  2, 2015, 16:26
А если программа бы не выдала ни одного решения? Где гарантия, что их действительно нет?
Это исключено, поскольку программа перебрала все возможные варианты (больше миллиарда — 1,147,715,240).
Потому что у тебя задача тривиальная. Да и то, глядя на программу, я бы не взялся быстро доказать ее правильность.

А мне надо было перебрать набор всех вариантов битовой матрицы, достаточный для того, чтобы быть уверенным, что если процедура скелетизации не "лажается" на них, то она не "лажается" никогда. Переборную программу-то я написал быстро, за неделю. А вот на доказательство того, что этот набор и правда достаточен, т.е. что перебрал ВСЕ возможные случаи, у меня ушло полгода.
Название: *Математика и программирование
Отправлено: mnashe от июля 2, 2015, 16:51
Цитата: Даниэль от июля  2, 2015, 16:32
Сейчас как-то более принято написать приложение на чем-нибудь вроде Objective C или Java, которая делает в точности то, что тебе нужно.
Делать больше нечего.
С задачей переключения прекрасно справляется и программа на ассемблере. Там вообще всё тривиально.
Нетривиально, правда, плавное (логарифмическое) управление яркостью с помощью ШИМ. Это действительно была интересная задача. Но я её уже давно решил.
Задача, которую мне сейчас надо было решить, к програмиированию не имеет никакого отношения. Мне нужно было правильно подключить каждый из 20 светодиодов, расположенных по кругу.
Печатная плата уже нарисована (по одному из множества вариантов, выданных программой).

Цитата: Даниэль от июля  2, 2015, 16:32
И использовать какое-нибудь устройство, для которого такой язык - входной. Скоро, наверно, других микроустройств и вовсе не останется.
Пока что обычные 8-битные микроконтроллеры и не думают умирать.
Название: *Математика и программирование
Отправлено: mnashe от июля 2, 2015, 16:53
Цитата: Даниэль от июля  2, 2015, 16:48
Потому что у тебя задача тривиальная.
Конечно.

Цитата: Даниэль от июля  2, 2015, 16:48
Да и то, глядя на программу, я бы не взялся быстро доказать ее правильность.
Та не, там всё просто.
Название: *Математика и программирование
Отправлено: _Swetlana от июля 2, 2015, 16:57
Цитата: mnashe от июля  2, 2015, 16:38
Цитата: _Swetlana от июля  2, 2015, 16:26
А если программа бы не выдала ни одного решения? Где гарантия, что их действительно нет?
Это исключено, поскольку программа перебрала все возможные варианты (больше миллиарда — 1,147,715,240).
Про ту программу автор тоже думал, что она перебрала все возможные варианты. Перебор геометрических вариантов вещь довольно сложная, можно и обшибицца. Ещё более интересен перебор всех вариантов замощения бесконечной плоскости.

Но прецедент, однако, был - программе был присвоен статус доказательства для NP-полной задачи раскраски неориентированного графа в минимальное число цветов (конкретно, её частного случая - задачи о четырёх красках).
ЦитироватьК. Аппель и В. Хакен доказали в 1976 г., что так можно раскрасить любую карту. Это была первая крупная математическая теорема, для доказательства которой был применён компьютер. Несмотря на последующие упрощения, доказательство практически невозможно проверить, не используя компьютер. Поэтому некоторые математики отнеслись к этому доказательству с недоверием, что объяснялось не только использованием компьютера, но и громоздкостью описания алгоритма первых доказательств (741 страница), впоследствии были предложены более компактные алгоритмы и скорректирован ряд ошибок[1]. Проблема четырёх красок является одним из известнейших прецедентов неклассического доказательства в современной математике.

Новое доказательство, основанное на алгебраических и топологических методах, дал индийский математик Ашей Дарвадкер[2] в 2000 году.
Название: *Математика и программирование
Отправлено: Даниэль от июля 2, 2015, 16:57
Цитата: From_Odessa от июля  2, 2015, 10:58
Цитата: Даниэль от июля  2, 2015, 00:32
Я, например, отлично понимаю, что программирование - намного более низкий уровень интеллектуального развития, чем чистая математика, и знаю, что в свое время просто "не потянул". При этом, на самом деле, я немного занимаюсь математикой, но я отчетливо понимаю: в целом математика труднее и интеллектуально выше, чем моя профессия.
Мне кажется, тут не все так просто. На самом деле, программирование, как мне кажется, это вообще отдельная отрасль, по сути, хоть ее и называют прикладной математикой. Программирование нередко требует тех умений и склонностей, которые "чистая" математика требует в меньшей степени. Умение создавать алгоритмы, алгоритмически мыслить, умение, охватывать программу взором и выделять в ней ошибки и нерациональности - это особая сфера. И великолепный "чистый" математик может быть к этому не так уж склонен. Программирование, я бы сказал, в определенные моменты превращается в искусство. Мне кажется, что математическое мышление и алгоритмические - это разные вещи. Я понимаю, что Вы хотите сказать, понимаю, что в глубине своей математика требует очень мощные интеллектуальные способности. Я просто хотел сказать, что такое сравнение лоб в лоб не очень верно, как мне видится.
Программирование - неустоявшийся термин, ему всего полвека. Поэтому этим словом называют что угодно, от верстки сайта до разработки алгоритма быстрой сортировки.

Я бы выделил в данном случае две области (на самом деле их больше, и они имеют друг к другу отдаленное отношение).
1) Алгоритмическое программирование. По сути, это действительно область математики. Разработка алгоритма, собственно, может начаться и закончиться на бумаге, не подходя к компьютеру (это, конечно, не рекомендуется, но встречается). Книга Кнута "Искусство программирования" - прекрасный образец алгоритмического программирования, и если вы помните, Великая теорема Ферма там значилась в качестве одного из упражнений еще во "Введении".
2) Системное программирование. Только не в смысле "ковыряние в железяках", а в смысле - проектирование сложных систем. Это умение грамотно спроектировать архитектуру пакетов, классов, интерфейсов, методов, решающих задачу, так чтобы программа получилась понятной, доступной для развития и сопровождения, расширяемой и т.д. Это знание так называемых паттернов и антипаттернов проектирования для данного языка (а сегодня это обычно ООП). Это владение собственно языками, знание их сильных и слабых мест, понимание производительности. Это знание существующих и разрабатывающихся сегодня библиотек, умение быстро найти готовое решение в интернете. Некоторое место здесь занимает и умение оптимизировать программу (не алгоритм, а именно программу), но это умение играет все меньшую роль по мере развития "интеллекта" платформ, при этом оно всегда и во все времена было менее важным, чем умение создать эффективный алгоритм (область №1).

А что касается искусства, то математика всегда и с самого начала - чистое искусство. Программирование, особенно вторая область, привносит сюда элементы технологии: можно не иметь гениального ума, просто знать основы и иметь обширное образование, и все же справиться с трудной задачей. Поэтому, собственно, я и предпочел его в свое время: для математики мой ум, на мой вкус, недостаточен.
Название: *Математика и программирование
Отправлено: _Swetlana от июля 2, 2015, 17:00
Цитата: Даниэль от июля  2, 2015, 16:41
Скорее всего, эта задача (она же математикам предлагалась) допускала решение путем "просто подумать".
Конечно. Задачи были взяты из журнала "Квант".
Название: *Математика и программирование
Отправлено: Даниэль от июля 2, 2015, 17:03
Цитата: mnashe от июля  2, 2015, 16:51
Цитата: Даниэль от июля  2, 2015, 16:32
Сейчас как-то более принято написать приложение на чем-нибудь вроде Objective C или Java, которая делает в точности то, что тебе нужно.
Делать больше нечего.
С задачей переключения прекрасно справляется и программа на ассемблере. Там вообще всё тривиально.
Нетривиально, правда, плавное (логарифмическое) управление яркостью с помощью ШИМ. Это действительно была интересная задача. Но я её уже давно решил.
Задача, которую мне сейчас надо было решить, к програмиированию не имеет никакого отношения. Мне нужно было правильно подключить каждый из 20 светодиодов, расположенных по кругу.
Печатная плата уже нарисована (по одному из множества вариантов, выданных программой).
Вот это тебе делать нечего, уж прости :) Если бы я взялся заниматься чем-то подобным на работе, меня бы шеф сразу остановил. Просто потому, что там вопрос звучит так: что дешевле - потратить 100 долларов на готовое устройство и 10 минуты на его программирование или же потратить 100 долларов на час работы программиста. Потому, собственно, у нас и нет устройств с языком Java за 35 центов: не потому, что их производить дороже, а потому, что это никого не интересует. Просто некому будет для них программировать - не найдется программистов, работа которых будет оцениваться в таких единицах. Исключение, конечно, составляют сверхпопулярные устройства, где одна и та же программа тиражируется в миллионах экземпляров; там цена и правда может быть очень маленькой.
Название: *Математика и программирование
Отправлено: Flos от июля 2, 2015, 17:03
Offtop
Цитата: mnashe от июля  2, 2015, 15:58
Имеется трёминутный таймер. В ванной висит. Помогает детям чистить зубы три минуты.

Цитата: Даниэль от июля  2, 2015, 16:32
Жуть какая :) Мне казалось, такие развлечения ушли в прошлое лет 30 назад. А поди ж ты... Любители вроде тебя все еще такое конструируют.

У меня для тех же целей в ванной песочные часы на 3 минуты.
:-[
Название: *Математика и программирование
Отправлено: Даниэль от июля 2, 2015, 17:04
Цитата: _Swetlana от июля  2, 2015, 16:57
Цитата: mnashe от июля  2, 2015, 16:38
Цитата: _Swetlana от июля  2, 2015, 16:26
А если программа бы не выдала ни одного решения? Где гарантия, что их действительно нет?
Это исключено, поскольку программа перебрала все возможные варианты (больше миллиарда — 1,147,715,240).
Про ту программу автор тоже думал, что она перебрала все возможные варианты. Перебор геометрических вариантов вещь довольно сложная, можно и обшибицца. Ещё более интересен перебор всех вариантов замощения бесконечной плоскости.

О чем я и говорю.
ЦитироватьА вот на доказательство того, что этот набор и правда достаточен, т.е. что перебрал ВСЕ возможные случаи, у меня ушло полгода.
Название: *Математика и программирование
Отправлено: _Swetlana от июля 2, 2015, 17:05
Цитата: Даниэль от июля  2, 2015, 16:57
А что касается искусства, то математика всегда и с самого начала - чистое искусство.
Когда я пришла на форум, захотелось мне где-то что-то написать. О чём знаю. Вот нашла я какую-то математическую тему и написала, что математика не является естественной наукой. Меня повалили и дружно пинали ногами  ;D
Название: *Математика и программирование
Отправлено: antic от июля 2, 2015, 17:14
Цитата: _Swetlana от июля  2, 2015, 17:05
Меня повалили и дружно пинали ногами
За что?
Название: *Математика и программирование
Отправлено: VLX от июля 2, 2015, 17:15
Цитата: _Swetlana от июля  2, 2015, 17:05
Меня повалили и дружно пинали ногами  ;D
Интересно, чем пинали аргументировали...
Название: *Математика и программирование
Отправлено: Даниэль от июля 2, 2015, 17:16
Цитата: _Swetlana от июля  2, 2015, 17:05
Цитата: Даниэль от июля  2, 2015, 16:57
А что касается искусства, то математика всегда и с самого начала - чистое искусство.
Когда я пришла на форум, захотелось мне где-то что-то написать. О чём знаю. Вот нашла я какую-то математическую тему и написала, что математика не является естественной наукой. Меня повалили и дружно пинали ногами  ;D
Разумеется, не является! Вы разве не знали?
Все науки делятся на 4 группы.
1) Естественные науки. Физика там, химия, биология, геология.
2) Неестественные науки. К примеру, шекспироведение. Шекспира читать надо, а не науки вокруг него разводить.
3) Противоестественные науки. Ну это все знают: научный атеизм, история КПСС и т.п. Сегодня я бы добавил "науку каббалу" Лайтмана.
4) Сверхъестественные науки. Это, по сути, одна наука, и это математика.
Название: *Математика и программирование
Отправлено: mnashe от июля 2, 2015, 18:16
Цитата: _Swetlana от июля  2, 2015, 16:57
Цитата: mnashe от июля  2, 2015, 16:38
Цитата: _Swetlana от июля  2, 2015, 16:26А если программа бы не выдала ни одного решения? Где гарантия, что их действительно нет?
Это исключено, поскольку программа перебрала все возможные варианты (больше миллиарда — 1,147,715,240).
Про ту программу автор тоже думал, что она перебрала все возможные варианты.
Дык
Цитата: Даниэль link=msg=2521894#2521894 от
задача тривиальная.
У меня действительно очень простая задача и очень простой алгоритм.
Щас объясню алгоритм перебора.
Если не учитывать порядок, то у каждой пары есть только три допустимые соседние пары. Пример я выше уже приводил: для 1-2 это 3-4, 3-5 и 4-5.
Берём и нумеруем допустимых соседей. Для каждой из 10 пар их всего три, а всего есть 19 переходов, стало быть, задача сводится к последовательному перебору всех 19-значных троичных чисел.
Проверки две: одна выполняется на каждом шагу, другая только в конце (после 19-го шага).
Первая проверка: если на очередном преобразовании вышла пара, встречавшаяся ранее уже дважды, то все числа, начинающиеся с этой же последовательности, запрещены и перебирать их нет смысла, так что сразу увеличиваем тот разряд, где мы наткнулись на запрет. Это резко сокращает количество перебираемых вариантов.
Вторая проверка: последняя пара является допустимым соседом первой.
Название: *Математика и программирование
Отправлено: mnashe от июля 2, 2015, 18:21
Цитата: Flos от июля  2, 2015, 17:03
У меня для тех же целей в ванной песочные часы на 3 минуты.
У меня тоже есть. Для той же цели куплены. Но стоят в спальне про запас.
Преимущества самоделки:
1. Красиво! С детства обожаю цветные лампочки :)
2. Не бьётся при падении.
3. Может пользоваться одновременно любое количество людей, стартовавших несинхронно. Просто каждый должен отметить в голове свою точку старта.
У наших детей почти всегда ситуация такова. Так что актуально. Песочных часов потребовалось бы 2 штуки.
Название: *Математика и программирование
Отправлено: mnashe от июля 2, 2015, 18:28
Цитата: Даниэль от июля  2, 2015, 17:03
Вот это тебе делать нечего, уж прости :) Если бы я взялся заниматься чем-то подобным на работе, меня бы шеф сразу остановил. Просто потому, что там вопрос звучит так: что дешевле - потратить 100 долларов на готовое устройство и 10 минуты на его программирование или же потратить 100 долларов на час работы программиста.
Во-первых, то, что ты говоришь, применимо лишь для продукта, создаваемого в единственном экземпляре. Ну или, если немного сдвинуть диапазоны, для маленьких серий.
Во-вторых, ты чего-то не понял. Моя задача в части программирования настолько проста, что хоть на яве, хоть на ассемблере на неё уходит несопоставимо меньше времени, чем на рисование и производство печатной платы (или распайку на макетке, как я сделал с уже существующим вариантом, без МК).
Так что нет смысла и говорить об этом.

Цитата: Даниэль от июля  2, 2015, 17:03
Исключение, конечно, составляют сверхпопулярные устройства, где одна и та же программа тиражируется в миллионах экземпляров; там цена и правда может быть очень маленькой.
Во-о-от!
Название: *Математика и программирование
Отправлено: mnashe от июля 2, 2015, 18:29
Цитата: Даниэль от июля  2, 2015, 17:16
Все науки делятся на 4 группы.
1) Естественные науки. Физика там, химия, биология, геология.
2) Неестественные науки. К примеру, шекспироведение. Шекспира читать надо, а не науки вокруг него разводить.
3) Противоестественные науки. Ну это все знают: научный атеизм, история КПСС и т.п. Сегодня я бы добавил "науку каббалу" Лайтмана.
4) Сверхъестественные науки. Это, по сути, одна наука, и это математика.
;D ;up:
Название: *Математика и программирование
Отправлено: _Swetlana от июля 2, 2015, 18:59
Цитата: VLX от июля  2, 2015, 17:15
Цитата: _Swetlana от июля  2, 2015, 17:05
Меня повалили и дружно пинали ногами  ;D
Интересно, чем пинали аргументировали...
Ногами. А могли ведь коньками с ботинками. С тех не выпендриваюсь, пишу не знаю о чём  ::)
Название: *Математика и программирование
Отправлено: _Swetlana от июля 2, 2015, 21:30
ЦитироватьСверхъестественные науки. Это, по сути, одна наука, и это математика.
О, как раз тема всплыла, репутация постов на ЛФ. Там ссылка есть, на поиск репутации по имени. Попутала малость. Вот этот пост:
Цитироватьматематическую логику я бы отнесла к языкознанию, как науку о языке, а всё остальное, пожалуй, к метафизике (как  разделу теологии), кое-что приходится принимать на веру
Название: *Математика и программирование
Отправлено: Lodur от июля 2, 2015, 21:52
Offtop
Цитата: _Swetlana от июля  2, 2015, 18:59А могли ведь коньками с ботинками.
Приятно читать оптимиста. У вас, небось, и стакан всегда наполовину полон... ;)
Название: *Математика и программирование
Отправлено: _Swetlana от июля 2, 2015, 22:00
Offtop
Цитата: Lodur от июля  2, 2015, 21:52
Offtop
У вас, небось, и стакан всегда наполовину полон... ;)
На целый стакан у меня уже здоровья нет  ;D
Название: *Математика и программирование
Отправлено: Ыняша от июля 2, 2015, 23:16
Есть изоморфизм Карри-Говарда: программа — это доказательство теоремы. А по hott, есть изоморфизм матлогики, теории множеств, теории гомологий и теории типов.  ;)
Название: *Математика и программирование
Отправлено: _Swetlana от июля 2, 2015, 23:32
Цитата: Ыняша от июля  2, 2015, 23:16
Есть изоморфизм Карри-Говарда: программа — это доказательство теоремы. А по hott, есть изоморфизм матлогики, теории множеств, теории гомологий и теории типов.  ;)
Никогда об этом не слышала.
Программа (алгоритм) = машина Тьюринга = частично-рекурсивная (вычислимая) функция = алгорифм Маркова, всё это чисто конструктивные вещи. На конструктивных доказательствах  даже матанализ не построить, в чём  убедились ещё в прошлом веке.

Есть обратная интересная проблема. Современная математика так сложна, что на проверку правильности полученных результатов нужны годы.  Если бы удалось формализовать запись доказательства до степени программы и заставить всех математиков выучить этот язык, то проверять логику доказательства можно было бы машинным способом.   
Название: *Математика и программирование
Отправлено: mnashe от июля 2, 2015, 23:35
Цитата: Даниэль от июля  2, 2015, 16:41
Но без математики все равно никуда: разработка правильного и быстрого алгоритма остается серьезной математической задачей.
Ага. Даже в моей простенькой задачке пришлось слегка математически подумать, чтобы перебор не растянулся на несколько недель.
Представь, если бы я перебирал не миллиард вариантов (3¹⁹), причём периодически перескакивая сразу через десятки и сотни миллионов, а все 10²º, решая задачу тупо в лоб. Я сначала посчитал, сколько времени займёт такой перебор (ибо зачем оптимизировать, если программа пишется на один раз?), и понял, что так не выйдет. Тогда вот и нашёл этот вариант с перебором связей, а не самих групп.
Название: *Математика и программирование
Отправлено: Ильич от июля 2, 2015, 23:41
Был такой физик Ричард Фейнман. Его "Фейнмановскими лекциями по физике" я просто восхищался в своё время. И там он написал, что математика вообще не наука, потому что она не изучает природу.
Я для себя решил, что математика всё же изучает природу - природу человеческого мозга.

_Swetlana написала, что математическую логику она бы отнесла к языкознанию. Это вряд ли можно сделать. Математика вообще язык, только он столь точен и столь ограничен, что на нем нельзя разговаривать, как и на любом языке программирования. И вот тут и есть причина, почему люди с математическим образованием, или просто со склонностью к простому и четкому мышлению были востребованы в программировании, как профессии в начале становления этой профессии.

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

From_Odessa описал качества, которые нужны программисту. На мой взгляд, он описал качества присущие математику. Я в своей жизни занимался математикой не больше двух лет сразу после университета. Не считая, конечно, преподавания. Но математика, как способ мышления, кормила меня почти всю жизнь.

Только ближе к 60-то годам пришлось сменить род занятий. А с этого года вообще чистый пенсионер. Развлекаюсь.
Название: *Математика и программирование
Отправлено: Ильич от июля 2, 2015, 23:44
Цитата: _Swetlana от июля  2, 2015, 23:32Есть обратная интересная проблема. Современная математика так сложна, что на проверку правильности полученных результатов нужны годы.  Если бы удалось формализовать запись доказательства до степени программы и заставить всех математиков выучить этот язык, то проверять логику доказательства можно было бы машинным способом.
Это уже делают, насколько я слышал. Но не для самых сложных случаев.
Название: *Математика и программирование
Отправлено: _Swetlana от июля 2, 2015, 23:50
Математика - язык. А математическая логика - наука о языке. Логично  ;D
Помню, как С.Б. Стечкин на лекции сказал, что сплайны - это кусок хлеба. Математика кормит (если не брать преподавание) только в каких-то прикладных задачах.
Название: *Математика и программирование
Отправлено: _Swetlana от июля 2, 2015, 23:53
ЗЫ. Меня всю жизнь муж-математик кормил (и продолжает), а не математика  :) хоть я и занималась прикладными задачами дискретной оптимизации, а муж - функциональным анализом.
Название: *Математика и программирование
Отправлено: Ильич от июля 2, 2015, 23:57
И ещё насчет сложности современной математики.
Вне математики постоянно возникают задачи, которые позволяют перевести их в математическую форму. И часто эту уже математические задачи не так уж и сложны. Вот их решением и занимаются многие математики. После решения задачи обычно есть куда развить результаты.
Хотя и не всегда.
Название: *Математика и программирование
Отправлено: Ильич от июля 3, 2015, 00:00
Цитата: _Swetlana от июля  2, 2015, 23:50
Математика - язык. А математическая логика - наука о языке. Логично  ;D
Помню, как С.Б. Стечкин на лекции сказал, что сплайны - это кусок хлеба. Математика кормит (если не брать преподавание) только в каких-то прикладных задачах.
Нет, совсем не логично.
А про математику, как способ прокормиться это вы в качестве реплики к моему сообщению написали?
Название: *Математика и программирование
Отправлено: Ыняша от июля 3, 2015, 00:46
Цитата: _Swetlana от июля  2, 2015, 23:32
Никогда об этом не слышала.
Программа (алгоритм) = машина Тьюринга = частично-рекурсивная (вычислимая) функция = алгорифм Маркова, всё это чисто конструктивные вещи. На конструктивных доказательствах  даже матанализ не построить, в чём  убедились ещё в прошлом веке.
Вкратце: есть типы, которые можно отождествить с высказываниями. Объект типа Т — есть доказательство этого высказывания. Теорема формулируется в типах и их производных (что соотвествует логическим операциям, предикатам и т.п), тогда программа, как объект итогового типа будет её доказательством.

В гомотопической теории типов ещё даётся изоморфизм типов с пространствами, объектов с точками, и дальше сечений, расслоения, пути... Плюс теория категорий высших порядков.

Но таки да это конструктивные вещи :3
На этой основе делают унивалентные основания математики — программу построения средствами гомотопической теории типов универсального формального языка, являющегося конструктивными основаниями для современных разделов математики и обеспечивающего возможность автоматической проверки правильности доказательств на компьютере.
Название: *Математика и программирование
Отправлено: From_Odessa от июля 3, 2015, 04:58
Цитата: Ильич от июля  2, 2015, 23:41
Я для себя решил, что математика всё же изучает природу - природу человеческого мозга.
С этим в полной мере не могу согласиться (с тем, что математика изучает природу только в этом разрезе). На мой взгляд, математика изучает в том числе и природу, вернее, говоря шире, мир или Вселенную, какой мы ее знаем и какой мы ее получаем в наших ощущениях. Математика изучает, в числе прочего, формы, которыми может быть представлена Вселенная (ее составляющие) или материя, соотношение между этими формами, она изучает также... как бы это сказать... общие механизмы, на которых строится взаимоотношение между различными объектами/явлениями и процессами. Изучает на базе очень высоких уровней абстракции и идеальных форм/объектов, но изучает. Я так полагаю.

Я тут вот писал в свое время еще свои мысли о математике - О математике (http://lingvoforum.net/index.php/topic,32545.0.html)

Хотя частично я уже с самим собой не согласен.
Название: *Математика и программирование
Отправлено: Flos от июля 3, 2015, 09:28
Цитата: Ильич от июля  2, 2015, 23:41
программирование уже нельзя назвать профессией. Эта область деятельности развилась настолько, что здесь сейчас нужны самые разные специалисты от художников до тех же математиков.
+1000
Всю трудовую жизнь занимаюсь программированием, математика как таковая потребовалась ровно один раз (нужно было шифровать данные открытым ключом). 

Программирование - это инструмент, но никоим образом не математический инструмент, просто инструмент, облегчающий любые рутинные задачи.
Название: *Математика и программирование
Отправлено: _Swetlana от июля 3, 2015, 09:39
Цитата: Flos от июля  3, 2015, 09:28
Всю трудовую жизнь занимаюсь программированием, математика как таковая потребовалась ровно один раз (нужно было шифровать данные открытым ключом). 
:E:
Ипотеку не брали, проценты не рассчитывали?
Название: *Математика и программирование
Отправлено: _Swetlana от июля 3, 2015, 09:40
Цитата: Ильич от июля  3, 2015, 00:00
Цитата: _Swetlana от июля  2, 2015, 23:50
Математика - язык. А математическая логика - наука о языке. Логично  ;D
Помню, как С.Б. Стечкин на лекции сказал, что сплайны - это кусок хлеба. Математика кормит (если не брать преподавание) только в каких-то прикладных задачах.
Нет, совсем не логично.
А про математику, как способ прокормиться это вы в качестве реплики к моему сообщению написали?
В качестве реплики.
Что не логично? 
Название: *Математика и программирование
Отправлено: Flos от июля 3, 2015, 09:41
Цитата: _Swetlana от июля  3, 2015, 09:39
Ипотеку не брали, проценты не рассчитывали?
Ага, смешно.
У меня жена деньги считает, мне не доверяет.
;)
Название: *Математика и программирование
Отправлено: _Swetlana от июля 3, 2015, 11:14
Сыну задачки не решали?  ;D
Название: *Математика и программирование
Отправлено: zwh от июля 3, 2015, 11:20
Цитата: Lodur от июля  2, 2015, 12:51
Как-то читал у кого-то из великих американских программистов (не помню, у кого... то ли создателя Паскаля, то ли создателя Си), что программирование отнесено к прикладной математике по ошибке. На самом деле, это область прикладной лингвистики, и из линвистов получаются намного лучшие программисты, чем из математиков. :) Мысль парадоксальна, но только на первый взгляд.
Вирт -- швейцарский программист, если чё.
Название: *Математика и программирование
Отправлено: Ильич от июля 3, 2015, 11:24
Цитата: _Swetlana от июля  3, 2015, 09:40
Цитата: Ильич от июля  3, 2015, 00:00
Цитата: _Swetlana от июля  2, 2015, 23:50
Математика - язык. А математическая логика - наука о языке. Логично  ;D
Помню, как С.Б. Стечкин на лекции сказал, что сплайны - это кусок хлеба. Математика кормит (если не брать преподавание) только в каких-то прикладных задачах.
Нет, совсем не логично.
А про математику, как способ прокормиться это вы в качестве реплики к моему сообщению написали?
В качестве реплики.
Что не логично?
Не вижу логики в вашей фразе. Математическая логика часть математики, а не метаматематика.
Что касается реплики, то я же писал про математику, как способ мышления. А это не то же самое, что математика.
Название: *Математика и программирование
Отправлено: Ильич от июля 3, 2015, 11:30
Цитата: Flos от июля  3, 2015, 09:41
Цитата: _Swetlana от июля  3, 2015, 09:39
Ипотеку не брали, проценты не рассчитывали?
Ага, смешно.
У меня жена деньги считает, мне не доверяет.
;)
Признайтесь, ведь просто лень домашними деньгами заниматься.
Название: *Математика и программирование
Отправлено: Flos от июля 3, 2015, 11:31
Цитата: Ильич от июля  3, 2015, 11:30
Признайтесь, ведь просто лень домашними деньгами заниматься.
Признаюсь.
Название: *Математика и программирование
Отправлено: _Swetlana от июля 3, 2015, 13:25
Цитата: Ильич от июля  3, 2015, 11:24
Цитата: _Swetlana от июля  3, 2015, 09:40
Цитата: Ильич от июля  3, 2015, 00:00
Цитата: _Swetlana от июля  2, 2015, 23:50
Математика - язык. А математическая логика - наука о языке. Логично  ;D
Помню, как С.Б. Стечкин на лекции сказал, что сплайны - это кусок хлеба. Математика кормит (если не брать преподавание) только в каких-то прикладных задачах.
Нет, совсем не логично.
А про математику, как способ прокормиться это вы в качестве реплики к моему сообщению написали?
В качестве реплики.
Что не логично?
Не вижу логики в вашей фразе. Математическая логика часть математики, а не метаматематика.
Что касается реплики, то я же писал про математику, как способ мышления. А это не то же самое, что математика.
(искусственный) Язык - формальная система. Наука, которая изучает свойства формальных систем - наука о языке. Самолично читала формальные системы в курсе математической логики.
Что не так?  :what:
Название: *Математика и программирование
Отправлено: Lodur от июля 3, 2015, 14:10
Цитата: zwh от июля  3, 2015, 11:20Вирт -- швейцарский программист, если чё.
Не уверен, что автором был именно Вирт. Может, я ошибся, и это был не создатель упомянутых мной языков программирования, а, например, Дональд Кнут или Ларри Уолл. Очень уж давно читал, но почему-то помнится, что автором книги был именно американец. :donno:
Но если вы встречали подобную мысль именно у Вирта - возможно, я просто неправильно "определил" национальность автора. :)
Название: *Математика и программирование
Отправлено: Даниэль от июля 3, 2015, 14:47
Цитата: Flos от июля  3, 2015, 09:28
Цитата: Ильич от июля  2, 2015, 23:41
программирование уже нельзя назвать профессией. Эта область деятельности развилась настолько, что здесь сейчас нужны самые разные специалисты от художников до тех же математиков.
+1000
Всю трудовую жизнь занимаюсь программированием, математика как таковая потребовалась ровно один раз (нужно было шифровать данные открытым ключом). 
У меня коллега - программист высокого класса, ему математика тоже не нужна. А мне нужна постоянно. Другим коллегам - иногда нужна, иногда нет. Все зависит от того, какие задачи решаешь.
Название: *Математика и программирование
Отправлено: Ильич от июля 3, 2015, 14:51
Цитата: _Swetlana от июля  3, 2015, 13:25(искусственный) Язык - формальная система. Наука, которая изучает свойства формальных систем - наука о языке. Самолично читала формальные системы в курсе математической логики.
Что не так?  :what:
Наверное, по-вашему всё так. Как понимались в ваших лекциях формальные системы не знаю, а то, что они были в курсе логики, скорей всего дело вкуса.
А то, что самолично читала, не убеждает. Я когда-то самолично читал курс математического моделирования производственных процессов. Студенты жаловались, что учебников не найти. А откуда было взяться учебникам, если я им рассказывал свои взляды на этот предмет, методы и их математические обоснования, которые мне представлялись полезными, а учебника я так и не написал.
Название: *Математика и программирование
Отправлено: Flos от июля 3, 2015, 14:53
Цитата: Даниэль от июля  3, 2015, 14:47
Все зависит от того, какие задачи решаешь.
Конечно.
Название: *Математика и программирование
Отправлено: Ильич от июля 3, 2015, 15:22
Цитата: Flos от июля  3, 2015, 14:53
Цитата: Даниэль от июля  3, 2015, 14:47
Все зависит от того, какие задачи решаешь.
Конечно.
Не всё.
Помню случай, когда приятель предложил мне написать программу для уже не помню каких перестановок в массиве. Через час я принес ему результат. Он был крайне удивлен, потому что сам потратил на такую программу, точнее алгоритм, пару дней. Я же увидел, что те перестановки просто группа, и алгоритм получился сразу. Не спрашивайте. что именно там было - не помню.
Да что далеко ходить. Тут Даниэль увидел с какой стороны подходить к задаче Мнаше, а другой станет писать программу тупого перебора вариантов. А сам Мнаше увидел "средний" путь.
То есть, знание математики помогает порой и в тех случаях, когда без неё можно обойтись.
Название: *Математика и программирование
Отправлено: _Swetlana от июля 3, 2015, 16:04
Цитата: Ильич от июля  3, 2015, 14:51
Цитата: _Swetlana от июля  3, 2015, 13:25(искусственный) Язык - формальная система. Наука, которая изучает свойства формальных систем - наука о языке. Самолично читала формальные системы в курсе математической логики.
Что не так?  :what:
Наверное, по-вашему всё так. Как понимались в ваших лекциях формальные системы не знаю, а то, что они были в курсе логики, скорей всего дело вкуса.
А то, что самолично читала, не убеждает. Я когда-то самолично читал курс математического моделирования производственных процессов. Студенты жаловались, что учебников не найти. А откуда было взяться учебникам, если я им рассказывал свои взляды на этот предмет, методы и их математические обоснования, которые мне представлялись полезными, а учебника я так и не написал.
Математическое моделирование не читала. Но в журнале "Системный анализ" опубликовала 1(одну) статью с моей собственной моделью оперативного планирования дискретного производства. Теперь числюсь автором РАН  ;D  надеюсь, меня это очень украшает  ::)
Что не отменяет вашего ответа на мой вопрос: к какому разделу математики у приличных людей принято относить теорию формальных систем, теоремы Гёделя и тому подобные весчи. Вот в чём вопрос  :???
Название: *Математика и программирование
Отправлено: Ыняша от июля 3, 2015, 17:13
Гёдель и прочая выводимость — это матлогика. Куда их можно ещё записать-то?
Название: *Математика и программирование
Отправлено: zwh от июля 3, 2015, 17:50
Цитата: Lodur от июля  3, 2015, 14:10
Цитата: zwh от июля  3, 2015, 11:20Вирт -- швейцарский программист, если чё.
Не уверен, что автором был именно Вирт. Может, я ошибся, и это был не создатель упомянутых мной языков программирования, а, например, Дональд Кнут или Ларри Уолл. Очень уж давно читал, но почему-то помнится, что автором книги был именно американец. :donno:
Но если вы встречали подобную мысль именно у Вирта - возможно, я просто неправильно "определил" национальность автора. :)
Не, просто я с детства помнил, что Вирт был каким-то европейцем (для обрамления текстовых строк используются не кавычки, а апострофы), посему засунул нос в Вики -- ба, швейцарец!
Название: *Математика и программирование
Отправлено: mnashe от июля 3, 2015, 18:24
Цитата: Ильич от июля  3, 2015, 15:22
Тут Даниэль увидел с какой стороны подходить к задаче Мнаше, а другой станет писать программу тупого перебора вариантов. А сам Мнаше увидел "средний" путь.
Кстати, я Данину идею так и не понял. Буду рад, если немного конкретизирует, чтобы мне, давно забросившему математику, тоже было понятно.
Название: *Математика и программирование
Отправлено: Даниэль от июля 3, 2015, 18:58
Цитата: Ильич от июля  3, 2015, 15:22
Да что далеко ходить. Тут Даниэль увидел с какой стороны подходить к задаче Мнаше, а другой станет писать программу тупого перебора вариантов.
Я, кстати, ошибся: уже потом заметил, что в условиях задачи значилось также "по диагонали". А коды Грея - это когда отличается хотя бы одна из цифр на своей позиции, а не вообще все цифры.
Название: *Математика и программирование
Отправлено: Даниэль от июля 3, 2015, 18:58
Цитата: mnashe от июля  3, 2015, 18:24
Кстати, я Данину идею так и не понял. Буду рад, если немного конкретизирует, чтобы мне, давно забросившему математику, тоже было понятно.
Ошибся я :(
Название: *Математика и программирование
Отправлено: Ильич от июля 3, 2015, 21:28
Цитата: Ыняша от июля  3, 2015, 17:13
Гёдель и прочая выводимость — это матлогика. Куда их можно ещё записать-то?
Наверное моё представление о математической логике остановилось на уровне 19-го века. Не было у меня курса математической логики. Для меня теорема Гёделя просто в основаниях математики, а то, что эти основания рассматривают как раздел матлогики. узнаю только сейчас.
Название: *Математика и программирование
Отправлено: _Swetlana от июля 3, 2015, 21:39
Цитата: Ильич от июля  3, 2015, 21:28
Цитата: Ыняша от июля  3, 2015, 17:13
Гёдель и прочая выводимость — это матлогика. Куда их можно ещё записать-то?
Наверное моё представление о математической логике остановилось на уровне 19-го века. Не было у меня курса математической логики. Для меня теорема Гёделя просто в основаниях математики, а то, что эти основания рассматривают как раздел матлогики. узнаю только сейчас.
Резон в этом, конечно, есть. Как только мы сказали true или false, формальная система тут же превратилась в свою интерпретацию.   
Название: *Математика и программирование
Отправлено: Lodur от июля 3, 2015, 22:39
Цитата: zwh от июля  3, 2015, 17:50Не, просто я с детства помнил, что Вирт был каким-то европейцем (для обрамления текстовых строк используются не кавычки, а апострофы), посему засунул нос в Вики -- ба, швейцарец!
Ну, справедливости ради... Я читал его "Алгоритм и структуры данных" примерно в то же время (когда изучал в институте программирование), когда и "Искусство программирования" Кнута, и много чего ещё из классики. Но в жизни оно как-то не пригодилось... Ничего сложнее скриптов для выполнения рутинных задач по обслуживанию сети писать не приходится по работе. :-[ Вряд ли это можно считать программированием. :)
Название: *Математика и программирование
Отправлено: Lodur от июля 3, 2015, 22:51
Цитата: Lodur от июля  3, 2015, 22:39Ничего сложнее скриптов для выполнения рутинных задач по обслуживанию сети писать не приходится по работе. :-[ Вряд ли это можно считать программированием. :)
Хотя, если брать в расчёт и хобби... Для создания красивых караоке-эффектов, используемых в субтитрах, приходилось действительно делать что-то типа минипрограммок на прилагаемом к программе для создания субтитров скриптовом языке. Автор программы предлагает выучить поддерживаемый ею язык программирования Lua (https://ru.wikipedia.org/wiki/Lua), и "варганить" эффекты на нём: типа, намного больше свободы; но мне лень учить целый язык ради нескольких строчек кода. ::)
Название: *Математика и программирование
Отправлено: _Swetlana от июля 8, 2015, 12:05
Да, и ещё о терминологии.
Математическое моделирование в непрерывном случае называется математическое моделирование, соответствующий журнал называется "Математическое моделирование", институт - Институт прикладной математики им. М.В. Келдыша РАН.
Матмоделирование в дискретном случае называется системный анализ  :o , соответствующий журнал называется  "Информационные технологии и вычислительные системы" (в предыдущем посте малость попутала), соответствующий институт называется Институт системного анализа РАН.
Название: *Математика и программирование
Отправлено: злой от августа 6, 2015, 10:55
Цитата: Ильич от июля  3, 2015, 15:22
Цитата: Flos от июля  3, 2015, 14:53
Цитата: Даниэль от июля  3, 2015, 14:47
Все зависит от того, какие задачи решаешь.
Конечно.
Не всё.
Помню случай, когда приятель предложил мне написать программу для уже не помню каких перестановок в массиве. Через час я принес ему результат. Он был крайне удивлен, потому что сам потратил на такую программу, точнее алгоритм, пару дней. Я же увидел, что те перестановки просто группа, и алгоритм получился сразу. Не спрашивайте. что именно там было - не помню.
Да что далеко ходить. Тут Даниэль увидел с какой стороны подходить к задаче Мнаше, а другой станет писать программу тупого перебора вариантов. А сам Мнаше увидел "средний" путь.
То есть, знание математики помогает порой и в тех случаях, когда без неё можно обойтись.

У нас в организации однажды был тренинг (модная нынче форма обучения). Разделили нас на две команды и дали задачу вроде "пятнашек" - поменяться местами с точностью до наоборот при наличии одного свободного места,  с усложняющими условиями вроде "не разговаривать", "вставать в случайном порядке", "нельзя возвращаться" и т.п. Мы эту задачу начали решать "практическим" способом, стали меняться местами, ухватывать какие-то закономерности, довольно быстро ее решили и наработали четкие моторные навыки. Наши соперники сразу почему-то пошли по пути разработки фундаментального алгоритма решения задачи, перекладывали конфеты двух разных цветов, ну задачу и не решили, мы их победили. Но тут задача приобрела неожиданный оборот, нам велели объединить две команды и переставлять большее количество людей, мы попробовали по нашей старой системе действовать и у нас ничего не получилось. Ступор, смятение чувств. Одна светлая голова из бывшей "вражеской" команды сказал - "дайте пару минут", и пошел играться с конфетами. Надо сказать, что и у нас, и у них в команде по ходу пьесы сформировались свои "лидеры", по крайней мере те, которых, другие слушали, но на момент ступора их никто не слушал, когда светлая голова пошел искать решение, у всех было настроение вроде "да делай что хочешь". И меньше чем через пару минут решение было готово, он говорит что-то вроде "такой-то никогда не должен идти после кого-то то там", или еще какое-то мнемоническое правило, мы, с учетом нашей наработанной моторики, живенько это воплощаем в жизнь, и "вуаля" - задача выполнена. И светлая голова стал, по крайней мере лично для меня, "авторитетом".
К чему это все - иногда лучше дать немного спокойно подумать "математику", чем чем дружно бестолку носиться туда-сюда всему коллективу  :)

Сейчас в программирование валят все подряд по единственному объединяющему признаку, что какое-то устройство программируется на какие-то действия, хотя вот есть мнение, что написание на бумажке алгоритма это тоже программирование, по крайней мере "написанием программы" это точно можно назвать. Хотя при этом программирование крупных продуктов подобно строительству - одной из самой сложных и хорошо разработанных сфер человеческой деятельности. Тут тебе и проектирование, и организация процесса, и всяческие согласования на разных этапах, и "взял кирпич-положил кирпич". Математика нужна на этапе проектирования (больше всего) и организации процесса, а также при экономическом обсчете всего этого хозяйства, и то без каких-то граней фантастики, а на уровне университетского курса. Я бы сказал, что для рационального и грамотного программирования на индивидуальном уровне нужна скорее логика, чем математика. Математика может быть "предметом" программирования, и в меньшей степени "инструментом".
Название: *Математика и программирование
Отправлено: balky_03 от октября 13, 2016, 00:36
Цитата: mnashe от июля  2, 2015, 10:53
Я пару часов пытался решить эту задачу в уме. Ничего не получалось.
Потом я взял двухцветные палочки и стал пытаться сложить из них. Провозился ещё полтора часа, ничего не вышло, я предположил, что задача неразрешима, но доказать этого не смог.
На следующий день я за пару часов написал программу из 70 строчек, и она мне менее чем за минуту выдала 38568 решений!
(Причём программа работает в виртуальной машине вроде явы, что заведомо снижает скорость как минимум на порядок).
Spoiler: программа ⇓⇓⇓

mnashe!
Объясните, пожалуйста, подробно как запустить Ваш код. Многое любопытно и непонятно в Ваших рассуждениях.

(http://i84.fastpic.ru/big/2016/1013/74/d498206dfd57c19908cd1b835e382774.jpeg)

У меня ничего не получается. Пытался его скомпилировать, но моему "flat assembler 1.71.54" не понравилась "строка 65": if r_flags&1 or (r_ax < buf_ofs) then

Подскажите в чём дело и как исправить?
Особенно интересует, что Вы подразумеваете конкретно под  виртуальной машиной Java - Java Virtual Machine  (сокращённо JVM). Какая версия?
Название: *Математика и программирование
Отправлено: mnashe от октября 13, 2016, 08:54
Цитата: balky_03 от октября 13, 2016, 00:36
Особенно интересует, что Вы подразумеваете конкретно под  виртуальной машиной Java - Java Virtual Machine  (сокращённо JVM). Какая версия?
Пропустили одно слово:
Цитата: mnashe от июля  2, 2015, 10:53
(Причём программа работает в виртуальной машине вроде явы, что заведомо снижает скорость как минимум на порядок).
«Вроде явы» — это общий принцип (команды виртуальной машины вместо команд физического CPU), но никак не сама ява.
См. тут: *Multi-Edit (http://lingvoforum.net/index.php/topic,69839.html)
Название: *Математика и программирование
Отправлено: balky_03 от октября 13, 2016, 10:24
Цитата: mnashe от октября 13, 2016, 08:54
«Вроде явы» — это общий принцип (команды виртуальной машины вместо команд физического CPU), но никак не сама ява.
См. тут: *Multi-Edit (http://lingvoforum.net/index.php/topic,69839.html)
mnashe!
Занимаюсь программированием на разных языках всего два года, как самоучка — поэтому многое не знаю. Новичок.

У меня установлены на ПК, помимо прочего:
1)   FASM 1.71.54 for Windows. Смотрите  картинку ниже.
2)   DOSBox 0.74 - эмулятор DOS-окружения на современных компьютерах.

Обычно вначале компилирую файлы с расширением *.asm на FASM, затем запускаю в DOSBox 0.74.
(http://i82.fastpic.ru/big/2016/1013/8c/4ff6aca69963315f28bfb703c784f78c.jpeg)

Полагаю: речь идёт о языке Ассемблер.

Просматривал Ваши ссылки на Multi-Edit по веткам форума в течение 40 минут, но ясности не прибавилось.   
"Вот тут она выложена: 6 уровней диалога с Богом
И тут (немного устаревшая): Считаем до миллиона
Тут и дальше я рассказывал: Ассемблер для Z80"


Напишите, пожалуйста, какие именно дополнительные программы надо скачать и установить, чтобы лично  убедиться в работоспособности Вашего кода.

Название: *Математика и программирование
Отправлено: mnashe от октября 13, 2016, 11:01
Цитата: balky_03 от октября 13, 2016, 10:24
Напишите, пожалуйста, какие именно дополнительные программы надо скачать и установить, чтобы лично  убедиться в работоспособности Вашего кода.
Если система поддерживает программы DOS, то ничего дополнительного не нужно, только Multi-Edit (по ссылке, которую ты уже увидел).
Если не поддерживает, то тоже ничего не нужно, поскольку у тебя есть DOSbox.
Скачиваешь архив, распаковываешь всё содержимое, запускаешь основной файл MEH.COM.
Копируешь в окошко редактора мой скрипт (если программа запускается напрямую из Windows, то Shift+F12 = paste, иначе придётся сначала сохранить его в каком-нибудь другом редакторе под любым именем с расширением .SRC и затем открыть в Multi-Edit'е), сохраняешь (под любым именем с расширением .SRC), компилируешь (Alt+C) и запускаешь (Shift+F4).
Есть куча способов запуска, и все сочетания клавиш перенастраиваемы, я просто пишу как оно там настроено сейчас и как быстрее всего запустить, чтобы по меню не лазить.
Название: *Математика и программирование
Отправлено: balky_03 от октября 13, 2016, 11:30
Цитата: mnashe от октября 13, 2016, 11:01
Скачиваешь архив, распаковываешь всё содержимое, запускаешь основной файл MEH.COM.
mnashe!
Прошу прощения за свою бестолковость. Для меня указанная на картинке ссылка: закрыта!

The topic or board you are looking for appears to be either missing or off limits to you.

Прошу, пожалуйста, перенесите ссылку на архив  Multi-Edit в эту тему: *Математика и программирование.

Вот тут она выложена: 6 уровней диалога с Богом (Reply #1on: July 4, 2014, 00:39)
"6 уровней диалога с Богом", страница 3
(http://i84.fastpic.ru/big/2016/1013/2e/76beb8671fa2a4ac962391c93c289e2e.jpeg)
Название: *Математика и программирование
Отправлено: mnashe от октября 13, 2016, 11:47
Цитата: balky_03 от октября 13, 2016, 11:30
The topic or board you are looking for appears to be either missing or off limits to you.
Sorry ::) Надо присоединиться к группе Религия (потом можно отписаться, тоже через свой профиль)'
Название: *Математика и программирование
Отправлено: balky_03 от октября 13, 2016, 12:40
Цитата: mnashe от октября 13, 2016, 11:47
Sorry ::) Надо присоединиться к группе Религия (потом можно отписаться, тоже через свой профиль)'
mnashe!
Огромное спасибо за внимание и радушие!

Вступил в  группу "Религия". Затем скачал оба файла, буду разбираться:
1)  MULTEDIT.RAR (989.02 kB - downloaded 4 times.)
2)  screenshot.png (22.22 kB, 1132x617 - viewed 7 times.)

Два этапа:

(http://i83.fastpic.ru/big/2016/1013/24/2a923c2ee631df7ea33c0cfd0579ca24.jpeg)

(http://i84.fastpic.ru/big/2016/1013/ef/7bf9f18513492d27f73cde7115433cef.jpeg)




Название: *Математика и программирование
Отправлено: balky_03 от октября 13, 2016, 20:45
Цитата: balky_03 от октября 13, 2016, 12:40
буду разбираться
mnashe!
Спасибо, получилось очень легко и без заморочек. Программа практически всё сама делает, кроме MULTEDIT ничего не потребовалось. Почти напрямую в Windows. Поразительно!!  :yes:

Всего 38568 комбинаций, смотрите картинку ниже от Notepad++
Правда, у меня слабый процессор, поэтому он считал 6 мин. 34 секунды.

mnashe, последний раз уточняю для себя: это действительно язык Ассемблер?

Ниже картинки о последовательности моих действий:

Перед компиляцией
(http://i83.fastpic.ru/big/2016/1013/e0/58f3fea04833f33b83c1dc2edffbc5e0.jpeg)

Общее время, затраченное на подсчёт
(http://i78.fastpic.ru/big/2016/1013/48/070731e4a411adf2c5f1d8ef7f982748.jpeg)

Файл OUTPUT.TXT (829 Kb)
(http://i85.fastpic.ru/big/2016/1013/6d/a30ebf8be8fdaa26c4649816d9d0276d.jpeg)
Название: *Математика и программирование
Отправлено: mnashe от октября 13, 2016, 22:50
Цитата: balky_03 от октября 13, 2016, 20:45
mnashe, последний раз уточняю для себя: это действительно язык Ассемблер?
:o
Нет, конечно!
Это скриптовый язык Multi-Edit'а. Он в чём-то похож на C, в чём-то на Pascal, в чём-то ещё на что-то... на Аду, что ли... :???
Сильно упрощённый при этом, даже функций и процедур нет, только подпрограммы.
На ассемблере написано ядро Multi-Edit'а.
Вот как выглядит фрагмент ассемблерного ядра Multi-Edit'а (это раздел, отвечающий за пересчёт дат, времени и т.п.)

А вот сердце виртуальной машины:
Название: *Математика и программирование
Отправлено: Bhudh от октября 13, 2016, 23:02
Цитата: balky_03 от октября 13, 2016, 20:45Всего 38568 комбинаций, смотрите картинку ниже от Notepad++
Правда, у меня слабый процессор, поэтому он считал 6 мин. 34 секунды.
А Вы уверены, что это из-за процессора?
Мне кажется, это из-за создания файла OUTPUT.TXT, в который записывается каждый результат.
Если открыть консоль браузера и пустить какой-нибудь цикл с выводом в консоль, витков эдак на 100k... Тоже исполнения долго ждать придётся.
Попробуйте вместо файла вывода сделать в скрипте простую переменную-счётчик результатов.
Название: *Математика и программирование
Отправлено: mnashe от октября 13, 2016, 23:15
Цитата: Bhudh от октября 13, 2016, 23:02
А Вы уверены, что это из-за процессора?
Мне кажется, это из-за создания файла OUTPUT.TXT, в который записывается каждый результат.
Нет. Windows кэширует вывод, так что он существенной роли не играет. У меня, во всяком случае.
Без вывода была примерно та же скорость.
Название: *Математика и программирование
Отправлено: Bhudh от октября 13, 2016, 23:19
Это ещё от размера кэша зависит.
Сорок тыщ чисел не баран чихнул.
Я, кстати, вывод в консоль всегда стараюсь кэшировать, в строковой переменной или в массиве. :)
Название: *Математика и программирование
Отправлено: mnashe от октября 14, 2016, 00:18
Bhudh, кэширование же есть в программе.
Посмотри, я выделил всю работу с файлом:
Spoiler: программа ⇓⇓⇓
Название: *Математика и программирование
Отправлено: Bhudh от октября 14, 2016, 00:24
Посыпаю главу пеплом, скрипт не смотрел (на телефоне проблематично).
Тогда интересно, что же там за процессор.
Название: *Математика и программирование
Отправлено: mnashe от октября 14, 2016, 00:25
Покажу ещё один ассемблер. Для 8-битных микроконтроллеров фирмы Microchip.
Это программа, по которой работает мой палаточный фонарик на микроконтроллере PIC12F683 стоимостью меньше полудоллара:
Название: *Математика и программирование
Отправлено: Тайльнемер от октября 14, 2016, 05:58
Цитата: Bhudh от октября 13, 2016, 23:19
Это ещё от размера кэша зависит.
Сорок тыщ чисел не баран чихнул.
Это же где-то полмегабайта всего. Чтобы 6 минут писать полмегабайта на диск...
Название: *Математика и программирование
Отправлено: Bhudh от октября 14, 2016, 10:41
Цитата: balky_03Файл OUTPUT.TXT (829 Kb)
Согласен, немного. Но каждое из чисел как-то там сложно вычисляется?
И шёл ли вывод только в файл?
Название: *Математика и программирование
Отправлено: balky_03 от октября 14, 2016, 11:15
Цитата: mnashe от октября 14, 2016, 00:25
Покажу ещё один ассемблер. Для 8-битных микроконтроллеров фирмы Microchip.
Это программа, по которой работает мой палаточный фонарик на микроконтроллере PIC12F683 стоимостью меньше полудоллара:
mnashe!
Опять ничего не получается.
1) Код  не чисто Ассемблер, компиляция не проходит! Моему "flat assembler 1.71.54" не понравилась строка 12: include "p12f683.inc" — зарубил идею!
(http://i84.fastpic.ru/big/2016/1014/46/1b863011ca829c4c5a121deb79d74046.jpeg)


2) MULTEDIT тоже "рогом упёрся", не проходит компиляция. Как быть?
Multi-Edit V4.13  [Text Edit]   Insert             Mem[380k] ëÿÖÜ üë 10:31 ▌ä"ü▐
ERROR 28: $command expected
─L[00001]─C[007]─P[001]─────────────────────────────────────────────────────────
;     ┌───v───┐


(http://i82.fastpic.ru/big/2016/1014/d0/e77b335f42ff023fe9c44f35f4187ed0.jpeg)
Название: *Математика и программирование
Отправлено: balky_03 от октября 14, 2016, 11:19
Цитата: Bhudh от октября 14, 2016, 00:24
Тогда интересно, что же там за процессор.
Bhudh!
Мой процессор двухъядерный  1.66 GHz.
(http://i82.fastpic.ru/big/2016/1014/82/e4b93707548fb3f0d3c598b5b8f3a282.jpeg)
Название: *Математика и программирование
Отправлено: Lodur от октября 14, 2016, 12:13
Цитата: balky_03 от октября 14, 2016, 11:15
Цитата: mnashe от октября 14, 2016, 00:25
Покажу ещё один ассемблер. Для 8-битных микроконтроллеров фирмы Microchip.
mnashe!
Опять ничего не получается.
1) Код  не чисто Ассемблер, компиляция не проходит! Моему "flat assembler 1.71.54" не понравилась строка 12: include "p12f683.inc" — зарубил идею!
:fp:
Прочтите уже что-нибудь по языкам программирования.
«Как и сам язык, ассемблеры, как правило, специфичны для конкретной архитектуры, операционной системы и варианта синтаксиса языка (https://ru.wikipedia.org/wiki/%D0%90%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80)».
Было бы станно, если бы у вас скомпилировалась эта программа - у вас ведь, как я понимаю, такого контроллера (Microchip P12F683) нет? Скорее всего, нужный файл "инклюд" (include (http://the-programmer.ru/publ/assembler_2/programmirovanie_na_assemblere/urok_105_komandy_include)) распространяется вместе с контроллером, и представляет собой набор рутин (то бишь, стандартных подпрограмм) для работы с оным. У вас же, как я понимаю, этого файла просто нет, поэтому компилятор ругается.
Название: *Математика и программирование
Отправлено: balky_03 от октября 14, 2016, 13:22
Цитата: Lodur от октября 14, 2016, 12:13
Прочтите уже что-нибудь по языкам программирования...
Было бы станно, если бы у вас скомпилировалась эта программа - у вас ведь, как я понимаю, такого контроллера (Microchip P12F683) нет?.. поэтому компилятор ругается.
Lodur!
Осилил только ограничения: 3 и 8! С Ассемблером вижусь раз в полгода, редко.  :-[ Шапочное знакомство.

Хорошо, вот он — "p12f683.inc", скачал его (13 Кб) https://class.ee.washington.edu/475/peckol/code/Microchip/microchipExamples/mpasm/P12F683.INC

(http://i78.fastpic.ru/big/2016/1014/c9/fac5b87cc519302974311d197b7eb7c9.jpeg)

Что с ним делать, чтобы "код mnashe" сработал? Куда его вставить? Подскажите, пожалуйста.

Название: *Математика и программирование
Отправлено: balky_03 от октября 14, 2016, 15:50
Цитата: balky_03 от октября 14, 2016, 13:22
Что с ним делать, чтобы "код mnashe" сработал? Куда его вставить? Подскажите, пожалуйста.
Чем дальше в лес, тем больше дров!!
Прописываю "p12f683.inc" по адресу: C:\FASM\INCLUDE\P12F683.INC
(http://i82.fastpic.ru/big/2016/1014/c6/bdd1f8b2c7c810ffa97a50e4eca1a8c6.jpeg)

Запускаю "flat assembler 1.71.54"! Теперь ему не нравится "строка 103" в самом " P12F683.INC", где он  сомневается в СТАТУСЕ:  RP1                          EQU     H'0006'
(http://i85.fastpic.ru/big/2016/1014/0b/69348922886f8ed73e20734e4a76cc0b.jpeg)

"Строка 103" выглядит так (на общем фоне)
(http://i78.fastpic.ru/big/2016/1014/04/81b250716230fa2115b7b9a85cc0eb04.jpeg)



Название: *Математика и программирование
Отправлено: mnashe от октября 14, 2016, 16:05
Цитата: Bhudh от октября 14, 2016, 10:41
И шёл ли вывод только в файл?
Да.

Цитата: balky_03 от октября 14, 2016, 13:22
Что с ним делать, чтобы "код mnashe" сработал?
1. Нарисовать схему и развести печатную плату фонарика (или воспользоваться моими).
2. Придумать конструкцию корпуса и собрать корпус (моей конструкцией лучше не пользоваться, она мне не понравилась, слишком много возни).
3. Купить все нужные детали:
4. Спаять плату.
5. Приклеить (на термопроводящий клей) или прикрутить (через термопасту) светодиодную матрицу на подходящий радиатор (в зависимости от мощности матрицы и конструкции корпуса).
6. Купить программатор (оптимальный вариант — PICkit3, цена порядка $12, точно не знаю сколько сейчас).
7. Загрузить с сайта Microchip и установить среду разработки MPLabX.
8. Подключить программатор к USB, а разъём программирования микроконтроллера на плате — к программатору (5 проводов, включая питание).
9. Запустить MPLabX.
10. Создать новый проект.
11. Добавить туда мой исходный код (файл tentlamp.asm).
12. Откомпилировать и залить в мк.
13. Отсоединить плату от программатора.
14. Перебросить перемычки или разъёмы на плате из режима программирования в рабочий режим.
15. Собрать весь фонарик: корпус, плату, держатель батарейки, радиатор с матрицей.

Я ничего не забыл? :???
Название: *Математика и программирование
Отправлено: balky_03 от октября 14, 2016, 16:46
Цитата: mnashe от октября 14, 2016, 16:05
        ...
       
  • диод Шоттки SS24 или SS34
  • пара резисторов на 100–300Ω в формате 1206 или 0805
  • пара резисторов на ≈1kΩ в формате 1206 или 0805
   ...
13. Отсоединить плату от программатора.
14. Перебросить перемычки или разъёмы на плате из режима программирования в рабочий режим.
15. Собрать весь фонарик: корпус, плату, держатель батарейки, радиатор с матрицей.

Я ничего не забыл? :???
mnashe!
Нет! И так впечатляюще!  ;up:
Спасибо, что вовремя меня предупредили (остановили). Хватит мне, выше крыши — сильных потрясений на сегодня.

mnasheдавайте земные (детские) задачи решать. Например, на оптимизацию ниже:

Условия
1)   После переработки сырья M получаем:  16a + 12b + 10c + 7d + 3e;
2)   Перерабатывая сырья N:  20a + 15b + 13c + 4d + 5e;
3)   Сырьё K:  11a + 10b + 9c + 5d + 4e.


Какое надо оптимальное соотношение (пропорция) между частями M, N и K — если общая потребность:  575a +  458b + 371c +  178d + 142e?


Название: *Математика и программирование
Отправлено: balky_03 от октября 14, 2016, 21:05
Неужели никто не знает? Вроде ещё не ночь, спать рановато. Америка не в счёт.

Предполагаю:  вокруг иностранцы, поскольку в России такие задачи под силу ребёнку.
Смотрите моё решение, затратил 2-3 минуты — возможно у кого-нибудь получится лучше.

(http://i84.fastpic.ru/big/2016/1014/af/9c987d79de3d44371646f579be62caaf.jpeg)
Название: *Математика и программирование
Отправлено: balky_03 от октября 15, 2016, 09:41
Имеется четыре агрегата (автомата) для изготовления  однотипных изделий.

Таблица. Вид и длительность операций на единицу продукции, в минутах
___________Штамповка_____Сборка_____Покраска_____Упаковка
Агрегат 1______0,51__________1,25_________0,25________0,20
Агрегат 2______0,43__________1,44_________0,35________0,18
Агрегат 3______0,35__________1,52_________0,34________0,16
Агрегат 4______0,41__________1,39_________0,33________0,17


Как правильно разделить операции между агрегатами, чтобы часовой выпуск готовой продукции был максимальным?

За что люблю программирование? Достаточно предложить любую детскую, но конкретную задачу, как математики тут же замолкают. Как бы теряют дар мышления.
Название: *Математика и программирование
Отправлено: balky_03 от октября 17, 2016, 08:27
Цитата: balky_03 от октября 15, 2016, 09:41
Как правильно разделить операции между агрегатами, чтобы часовой выпуск готовой продукции был максимальным?
В Интернете аналогов подобных задач нет.

Затратил 5-7 минут  на решение — чисто умозрительное, чтобы каждый агрегат занимался делом, которое у него получается лучше. Никакое программирование не потребовалось.

Узкое место "сборка", поэтому максимальный часовой выпуск — 111 штук готовых изделий.

(http://i82.fastpic.ru/big/2016/1017/7b/a160ef99d753e46ea0782303f6d3487b.jpeg)
Название: *Математика и программирование
Отправлено: Yougi от октября 17, 2016, 09:06
 Программирование<>математике по одной простой причине
- не существует идеального компьютера с идеальным компилятором, как не существует идеального газа, сферического коня в ваккууме и прочих удобных для манипуляций, но отсутствующих в реальной жизни объектов.
"Мы живём в суровом аналоговом мире" (с) СтивенсОн.
Когда берут программера на работу, первое, о чём его спрашивают - знает ли он конкретный компилятор А, редактор В этсетера. Потому что часто А=B даёт в результате иной код, чем В=А. И всё это надо знать...
Лет 20 назад Дейкстра носился с идеей универсального верификатора программ... Ну и чем это кончилось? А ничем, собственно. По прежнему практика - критерий истины. Тестеры не нашли ошибок - и ладушки.
Название: *Математика и программирование
Отправлено: balky_03 от октября 17, 2016, 10:19
Цитата: balky_03 от октября 17, 2016, 08:27
Никакое программирование не потребовалось.
Поправка компьютера, ниже, заметил мою описку.

Правильно: максимальный часовой выпуск — 112 штук готовых изделий.

У меня счётная ошибка по сборке  из-за рассеянности,  :-[ считал в уме — вроде всё просто.
Проверить на калькуляторе поленился [26 + 41 + 2 + 42(??) = 111] <—> [59,77/1,39 = 43!!].
Напоролся, споткнулся на ровном месте.

(http://i85.fastpic.ru/big/2016/1017/99/73a24e9706c2e813e3cf6e1ca595b399.jpeg)
Название: *Математика и программирование
Отправлено: Hellerick от октября 17, 2016, 11:22
Недавно, для наведения порядка в скачиваемых с интернетов картинках сделал себе программу для «фингерпринтинга» изображений.
Программа анализирует изображение и добавляет спереди к названию файла его фингерпринт так, чтобы похожие изображения в результате оказывались рядом при сортировке файлов.
Программа, вроде бы, работает нормально.
Но как форумчане решили бы эту задачу? Как, по-вашему, должен выглядеть фингерпринт, и какую информацию он должен содержать?
Название: *Математика и программирование
Отправлено: _Swetlana от ноября 2, 2016, 23:01
Цитата: balky_03 от октября 14, 2016, 21:05
Неужели никто не знает? Вроде ещё не ночь, спать рановато. Америка не в счёт.

Предполагаю:  вокруг иностранцы, поскольку в России такие задачи под силу ребёнку.
Смотрите моё решение, затратил 2-3 минуты — возможно у кого-нибудь получится лучше.

(http://i84.fastpic.ru/big/2016/1014/af/9c987d79de3d44371646f579be62caaf.jpeg)
За такие задачи Канторович нобелевскую премию получил.
(wiki/ru) Канторович,_Леонид_Витальевич (http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BD%D1%82%D0%BE%D1%80%D0%BE%D0%B2%D0%B8%D1%87,_%D0%9B%D0%B5%D0%BE%D0%BD%D0%B8%D0%B4_%D0%92%D0%B8%D1%82%D0%B0%D0%BB%D1%8C%D0%B5%D0%B2%D0%B8%D1%87)

Раз уж мы этого коснулись, на ночь глядя. ЛП - медленная вещь. Многие задачи, которые допускают сетевую постановку (через графы), например, все варианты транспортной задачи, быстрее решаются алгоритмами построения потоков в сетях. Линейное программирование - универсальный метод; потоковые алгоритмы более специализированы, потому  быстрее. Но с формальной точки зрения, как бы мы не решали NP-полные задачи, линейным программированием или потоковыми алгоритмами, всё равно в худшем случае выч. сложность экспоненциальна. Просто у потоковых алгоритмов экспоненциальный взрыв отодвинут до нескольких тысяч вершин.
Название: *Математика и программирование
Отправлено: Ömer от ноября 3, 2016, 01:53
Цитата: Hellerick от октября 17, 2016, 11:22
Недавно, для наведения порядка в скачиваемых с интернетов картинках сделал себе программу для «фингерпринтинга» изображений.
Программа анализирует изображение и добавляет спереди к названию файла его фингерпринт так, чтобы похожие изображения в результате оказывались рядом при сортировке файлов.
Программа, вроде бы, работает нормально.
Но как форумчане решили бы эту задачу? Как, по-вашему, должен выглядеть фингерпринт, и какую информацию он должен содержать?
Хмм, наверно нужно разложить в ряд Фурье. Фингерпринт будет содержать конечное число кофициентов при гармониках.
Название: *Математика и программирование
Отправлено: Ömer от ноября 3, 2016, 02:00
Цитата: _Swetlana от ноября  2, 2016, 23:01
За такие задачи Канторович нобелевскую премию получил.
(wiki/ru) Канторович,_Леонид_Витальевич
Цитировать
После того, как Л. В. Канторовичем был предложен оптимальный метод распила фанерного листа, этот метод в том числе попытались применить к разрезанию стальных листов. После внедрения методов оптимизации на производстве одной из фабрик инженерам удалось улучшить показатели, что привело, однако, к негативным последствиям: система социалистического планирования требовала, чтобы в следующем году план был перевыполнен, что было принципиально невозможно при имеющихся ресурсах, поскольку найденное решение было абсолютным максимумом; фабрика не выполнила план по металлолому, львиная доля которого складывалась из обрезков стальных листов. Руководство фабрики получило выговор и больше с математиками не связывалось.
:D
Название: *Математика и программирование
Отправлено: Hellerick от ноября 3, 2016, 03:22
Цитата: svarog от ноября  3, 2016, 01:53
Хмм, наверно нужно разложить в ряд Фурье. Фингерпринт будет содержать конечное число кофициентов при гармониках.
Звучит здорово.

Жаль, непонятно. Нам практическое применение рчдов Фурье вообще никак не объясняли.
Название: *Математика и программирование
Отправлено: Ömer от ноября 3, 2016, 14:12
Цитата: Hellerick от ноября  3, 2016, 03:22
Жаль, непонятно. Нам практическое применение рчдов Фурье вообще никак не объясняли.
Схема такая.

Берём пиксельное представление картинки, т.е. функцию f(x,y) -> (R,G,B). Для каждой из цветовых компонент проделываем следующий алгоритм. Для примера возьмём компоненту R. Для неё имеем скалярную функцию:
f(x,y) -> R

Применяем к ней двумерное преобразование Фурье, т.е. находим коэффициенты ряда Фурье при разложении этой функции по какому-то ортогональному базису (обычно берутся синусы-косинусы):
http://math.stackexchange.com/questions/211689/real-valued-2d-fourier-series

(Существуют вычислительные алгоритмы, позволяющие быстро найти коэффициенты Фурье, например Fast Foruier transform (https://en.wikipedia.org/wiki/Fast_Fourier_transform))

В итоге получаем набор коэффициентов ci,j. Для создания сжатого образа картинки берём конечный набор этих коэффициентов (меньший, чем размер исходной картинки). На этом принципе работают алгоритмы сжатия типа jpeg или mp3.

Для создания fingerprint'a можно отсортировать коэффициенты в одномерный массив, например, пронумеровав "змейкой" (имеем в виду, что чем меньше номер коэффициента, тем важнее отвечающая ему гармоника).
(wiki/en) Pairing_function#/media/File:Diagonal_argument.svg (https://en.wikipedia.org/wiki/Pairing_function#/media/File:Diagonal_argument.svg)

После этого обрезаем массив и преобразуем его в строку. По сути, такой метод -- тот же jpeg с очень большим коэффициентом сжатия.
Название: *Математика и программирование
Отправлено: лад от ноября 3, 2016, 14:16
Цитата: svarog от ноября  3, 2016, 14:12
Цитата: Hellerick от ноября  3, 2016, 03:22
Жаль, непонятно. Нам практическое применение рчдов Фурье вообще никак не объясняли.
Схема такая.

Берём пиксельное представление картинки, т.е. функцию f(x,y) -> (R,G,B). Для каждой из цветовых компонент проделываем следующий алгоритм. Для примера возьмём компоненту R. Для неё имеем скалярную функцию:
f(x,y) -> R
Для фингерпринта это не нужно, надо брать Y (яркость, lumu). А цветные компоненты надо вообще выбрасывать, в них информации практически нет.

Название: *Математика и программирование
Отправлено: Hellerick от ноября 3, 2016, 14:37
Цитата: svarog от ноября  3, 2016, 14:12
Берём пиксельное представление картинки, т.е. функцию f(x,y) -> (R,G,B). Для каждой из цветовых компонент проделываем следующий алгоритм. Для примера возьмём компоненту R. Для неё имеем скалярную функцию:
f(x,y) -> R
Фурье ведь работает с рядом, а не с двухмерым массивом. То есть в него надо скармливть не двухмерное изображение, а один поток пикселей, собираемый по строкам? А не получатся ли итоговые коэффициенты зависящими от размера изображения? Хотелось бы, чтобы у разных размеров одной картинки фингерпринт был один.
Название: *Математика и программирование
Отправлено: Ömer от ноября 3, 2016, 15:04
Цитата: Hellerick от ноября  3, 2016, 14:37
Фурье ведь работает с рядом, а не с двухмерым массивом.
Фурье работает с функцией. В одномерном случае он преобразует функцию R->R в ряд ci.

Существует преобразование Фурье для любых размерностей, я выше давал ссылку.
http://math.stackexchange.com/questions/211689/real-valued-2d-fourier-series

В двумерном случае, функция R2 -> R преобразуется в двумерный массив сi,j.

Цитата: Hellerick от ноября  3, 2016, 14:37
А не получатся ли итоговые коэффициенты зависящими от размера изображения?
Получатся. Нужно над этим отдельно подумать (кажется, достаточно будет просто пронормировать, т.е. разделить все коэффициенты на первый).
Так же, над сдвигом нужно подумать. Для сдвига наверно просто нужно выкинуть свободный коэффициент.
Название: *Математика и программирование
Отправлено: Ömer от ноября 3, 2016, 15:09
Hellerick, а как вы сделали?
Название: *Математика и программирование
Отправлено: лад от ноября 3, 2016, 15:10
Цитата: svarog от ноября  3, 2016, 15:04
Цитата: Hellerick от ноября  3, 2016, 14:37
А не получатся ли итоговые коэффициенты зависящими от размера изображения?
Получатся. Нужно над этим отдельно подумать (кажется, достаточно будет просто пронормировать, т.е. разделить все коэффициенты на первый).
Так же, над сдвигом нужно подумать. Для сдвига наверно просто нужно выкинуть свободный коэффициент.
Это плохо, очень. Для этих целей лучше всего подходят вейвлет-преобразования.
Название: *Математика и программирование
Отправлено: Hellerick от ноября 3, 2016, 15:14
Цитата: лад от ноября  3, 2016, 15:10
Цитата: svarog от ноября  3, 2016, 15:04
Цитата: Hellerick от ноября  3, 2016, 14:37
А не получатся ли итоговые коэффициенты зависящими от размера изображения?
Получатся. Нужно над этим отдельно подумать (кажется, достаточно будет просто пронормировать, т.е. разделить все коэффициенты на первый).
Так же, над сдвигом нужно подумать. Для сдвига наверно просто нужно выкинуть свободный коэффициент.
Это плохо, очень. Для этих целей лучше всего подходят вейвлет-преобразования.
Для этого достаточно просто предварительно сжать изображение до стандартной миниатюры. Например, 16x16 пикселей.
Название: *Математика и программирование
Отправлено: Ömer от ноября 3, 2016, 15:18
Цитата: лад от ноября  3, 2016, 15:10
Это плохо, очень. Для этих целей лучше всего подходят вейвлет-преобразования.
Как вейвлеты решат проблемы со сдвигом и масштабированием? Вейвлет-функции -- это такой же ортонормированный базис как и синусы-косинусы. Никаких качественно новых свойств у них нет.
Название: *Математика и программирование
Отправлено: лад от ноября 3, 2016, 15:20
Цитата: svarog от ноября  3, 2016, 15:18
Цитата: лад от ноября  3, 2016, 15:10
Это плохо, очень. Для этих целей лучше всего подходят вейвлет-преобразования.
Как вейвлеты решат проблемы со сдвигом и масштабированием? Вейвлет-функции -- это такой же ортонормированный базис как и синусы-косинусы. Никаких качественно новых свойств у них нет.
Не тот же. Вейвлеты это и есть разложение с масштабированием, грубо говоря. Новые качественные свойства у них есть.
Название: *Математика и программирование
Отправлено: Ömer от ноября 3, 2016, 15:24
Цитата: лад от ноября  3, 2016, 15:20
Не тот же. Вейвлеты это и есть разложение с масштабированием, грубо говоря.
То есть, вы хотите сказать, что у функции 3*f(x) будут такие же коэффициенты в вейвлет-разложении, что и у функции f(x)? Это же нелогично. Понятно, что коэффициенты всё равно будут в три раза больше.

В целом я согласен, вейвлет-базис лучше подходит для картинок и музыки. Он вроде бы лучше выделяет значимые для глаза/уха компоненты.
Название: *Математика и программирование
Отправлено: лад от ноября 3, 2016, 15:29
Цитата: svarog от ноября  3, 2016, 15:24
Цитата: лад от ноября  3, 2016, 15:20
Не тот же. Вейвлеты это и есть разложение с масштабированием, грубо говоря.
То есть, вы хотите сказать, что у функции 3*f(x) будут такие же коэффициенты в вейвлет-разложении, что и у функции f(x)? Это же нелогично. Понятно, что коэффициенты всё равно будут в три раза больше.
Мы же говорим о дискретном случае. Так вот, старшие коэффициенты вейлет-преобразования не зависят от величины картинки. Грубо говоря, это просто как коэффициенты всегда уменьшенной картинка скажем до 16х16, только качественнее. В этом то и смысл вейвлетов.
Название: *Математика и программирование
Отправлено: Hellerick от ноября 3, 2016, 15:30
Цитата: svarog от ноября  3, 2016, 15:09
Hellerick, а как вы сделали?
Да я мудрствовал.

В первую очередь изображение кадрируется — чтобы избавиться от неинформативного фона.

Потом для каждого цветового уровня изображения замеряю среднее значение. Потом замеряю, а в каждой четверти средний уровень выше или ниже среднего по изображению — таким образом получаю 4 бита информации. А для трех цветовых уровней — 12 бит.

Потом такую же операцию проделываю для каждой четверти. Всего таким образом получаю 60 бит. При перекодировании в латиницу-26 эта информация умещается в 13 символах, которые добавляются спереди к названию файла.
Название: *Математика и программирование
Отправлено: лад от ноября 3, 2016, 15:35
Цитата: Hellerick от ноября  3, 2016, 15:30
Цитата: svarog от ноября  3, 2016, 15:09
Hellerick, а как вы сделали?
Да я мудрствовал.

В первую очередь изображение кадрируется — чтобы избавиться от неинформативного фона.

Потом для каждого цветового уровня изображения замеряю среднее значение.
Вот это излишне. Качественнее перевести изображение в YCbCr,  CbCr выкинуть, то есть вообще не считать. С Y сделать то что вы делаете. А если хочется, то приибавить средние по Cb Cr, чтобы различать цвета картинок. Так сжатие будет сильнее, и качество картинки будет передаваться лучше.
Название: *Математика и программирование
Отправлено: Тайльнемер от ноября 3, 2016, 17:50
Цитата: лад от ноября  3, 2016, 15:35
CbCr выкинуть, то есть вообще не считать.
Тут ещё неизвестно, что сильнее влияет на «похожесть». Может захотеться сгруппировать жёлтые картинки с жёлтыми, красные — с красными и т. д.
Название: *Математика и программирование
Отправлено: Тайльнемер от ноября 3, 2016, 17:50
Цитата: Hellerick от ноября  3, 2016, 15:30
Потом для каждого цветового уровня изображения замеряю среднее значение. Потом замеряю, а в каждой четверти средний уровень выше или ниже среднего по изображению — таким образом получаю 4 бита информации. А для трех цветовых уровней — 12 бит.

Потом такую же операцию проделываю для каждой четверти.
Это практически  и есть фурье.
Название: *Математика и программирование
Отправлено: лад от ноября 3, 2016, 17:58
Цитата: Тайльнемер от ноября  3, 2016, 17:50
Цитата: Hellerick от ноября  3, 2016, 15:30
Потом для каждого цветового уровня изображения замеряю среднее значение. Потом замеряю, а в каждой четверти средний уровень выше или ниже среднего по изображению — таким образом получаю 4 бита информации. А для трех цветовых уровней — 12 бит.

Потом такую же операцию проделываю для каждой четверти.
Это практически  и есть фурье.
Нет. Это больше похоже на преобразование Уолша(Адамара) или вейвлет Хаара. Коэффициентами Фурье тут и не пахнет.
Название: *Математика и программирование
Отправлено: Hellerick от ноября 24, 2016, 15:41
Задачка из моей темы Проект автомобильных номеров России (http://lingvoforum.net/index.php/topic,86503.0.html)

Чтобы автомобильные номера выдавались не по порядку, а максимально разными, я их порядок перепутываю по такой формуле:

n = p*128142731%207339264,

где:
% — операция остатка от деления:
p — изначальный порядковый номер;
n — число, определяющее, что именно будет написано на собственно номерном знаке;
207339264 — теоретическое максимальное количество выдаваемых номеров;
128142731 — простое число, используемое для «перетасовывания» номеров (выбрано так, чтобы 207339264/128142731 было похоже на золотое сечение).

Но что если мне наоборот хочется из n получить p?

Я составил для этого формулу, но сам не понимаю, как и почему она работает. Что-то у меня мозги вообще в теме остатка от деления плохо работают.

Как бы вы находили p?
Название: *Математика и программирование
Отправлено: Upliner от ноября 24, 2016, 16:55
Цитата: Hellerick от ноября 24, 2016, 15:41
Как бы вы находили p?
Так же как и вы. Нагуглил бы, что это называется "деление в кольце" и как делается, а на объяснения "почему работает" забил бы.
Название: *Математика и программирование
Отправлено: Hellerick от декабря 9, 2016, 04:27
Кто-нибудь пытался освоить разведение нейросетей?
Название: *Математика и программирование
Отправлено: Тайльнемер от декабря 9, 2016, 06:08
Цитата: Hellerick от декабря  9, 2016, 04:27
Кто-нибудь пытался освоить разведение нейросетей?
Вадимий щас этим занимается в универе. Если есть вопросы, могу ему передать.
Название: *Математика и программирование
Отправлено: Hellerick от декабря 9, 2016, 06:11
Да я вот прикидывал, можно ли нейросеть заставить составлять транскрипции незнакомых английских слов.
Понятно, что можно — вот только насколько реалистично для непрофессионалов?
Название: *Математика и программирование
Отправлено: Тайльнемер от декабря 9, 2016, 08:17
Цитата: ВадимийНе готов ответить содержательно, хотя ставлю на да.
Название: *Математика и программирование
Отправлено: Bhudh от декабря 9, 2016, 09:33
Скорее всего, проще обойтись скриптом, дающим варианты с вероятностями. Сетки в мелочах путаются.