Обсуждение:Метод четырёх русских для умножения матриц — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м
м (Дмитрий Мурзин переименовал страницу Обсуждение:Метод четырех русских для умножения матриц в [[Обсуждение:Метод четырёх русских для у…)
 
(не показано 14 промежуточных версий 2 участников)
Строка 1: Строка 1:
* А как обоснован выбор <tex> k = \log_2(n) </tex>? Тут по идее надо брать частную производную <tex> 2^{2k} k + \frac{n^3}{k} </tex> и приравнивать нулю, но получается непонятно как решаемое уравнение.
+
: {{tick | ticked=1}} Добавить анализ (почему именно log n) оценки для k.
 +
: {{tick | ticked=1}} «трудоёмкость» — бррр, асимптотика же.
 +
: {{tick | ticked=1}}  Добавить псевдокод
 +
:: писал кучу раз — псевдокод должен явно принимать входные данные и явно возвращать ответ. Тут я этого не наблюдаю.
 +
::: не понимаю, в чем сложность сделать код одной функцией, без всякого ввода-вывода. ладно, хрен с ним.
 +
:: аргумент после log не в скобках(done)
 +
:: Насколько я помню, в c++, java и вообще большинстве ЯП log — это натуральный логарифм, пиши явно log2.(done)
 +
:: cursuma и т.п. никуда не годится, используй camelCase.(done)
 +
:: Зачем большие I и J?(done)
 +
:: Что за precul? Во-первых, используй какой-то стиль именования переменных, во-вторых, c'''a'''lculation.(done)
 +
:: log n округлено вверх, или вниз? Разберись и напиши в коде явно, создаётся ощущение что k — double.(done)
 +
:: Для возведения в степень лучше использовать **, так как во многих языках программирования ^ — xor.(done) // ты таки написал (1 << k) вместо явного 2 ** k. В общем-то ладно, и в программе все сдвиг, конечно, юзают, но, имхо, псевдокод надо как можно более явным делать.
 +
:: Зачем вообще всё написано словами? Считаешь скал. произведения - отображай это кодом(хотя бы функцией dotProduct), если хочешь — напиши коммент. В общем, слишком много слов в псевдо''коде''.(done)
 +
 
 +
: {{tick | ticked=1}} Зачем раздел «постановка задачи»? Перемести это в шапку.
 +
:: Зачем «Рассмотрим следующую задачу:»? Пиши сразу условие задачи, зачем его цитировать? А ещё точка ставится после закрывающей кавычки, а не перед. 
 +
: {{tick | ticked=1}} Зачем такой маленький раздел «предподсчет»? Объедини его со сжатием матриц.
 +
: {{tick | ticked=1}} используй везде n одинакового размера
 +
: {{tick | ticked=1}} указать ссылки на какие-нибудь источники
 +
: {{tick | ticked=1}} добавить категории
 +
: Кстати, лучше подписываться. Я тоже забыл в прошлый раз, но всё же.
 +
--[[Участник:Dgerasimov|Дмитрий Герасимов]] 07:57, 16 декабря 2011 (MSK)
 +
 
 +
== Замечания АС ==
 +
: {{tick | ticked=1}} Оценка сложности и выбор k - немного перемудрили. Тут на самом деле нельзя асимптотически улучшить выбором k, но это непросто показать. Достаточно сказать, что выбрав k = \Omega(log n) получаем требуемую сложность
 +
: {{tick | ticked=1}} Код убрать или заменить на псевдокод
 +
: {{tick | ticked=1}} Нужен пример и, желательно, картинка"
 +
:: Пример хороший, но все-таки, обозначь не 0, 1, 2, 3, а 00, 01, 10, 11, будет нагляднее. --[[Участник:Dgerasimov|Дмитрий Герасимов]] 23:37, 12 января 2012 (MSK)
 +
 
 +
: {{tick | ticked=1}} опять умножение звездочкой. Кто еще обозначит умножение звездочкой в викиконспекте, отправлю в монастырь!
 +
: {{tick | ticked=1}} оформление источников сделать по-человечески
 +
:: А зачем название жирным?
 +
: {{tick | ticked=1}} все также нет картинки общего метода
 +
:: Здесь имеется в виду, что нужно описать еще и общий метод «четырех русских», так как он применяется не только для перемножения матриц. Почитай «Гасфилд — Деревья, строки и последовательности», там на стр. 369 написано про это, попробуй выделить общий метод и сделай какую-то схему/картинку. --[[Участник:Dgerasimov|Дмитрий Герасимов]] 07:34, 13 января 2012 (MSK)
 +
::: Опять же, мне кажется, это не то что хочет Андрей Сергеевич. Ему нужна картинка _общео_ метода, а не перемножения матриц. --[[Участник:Dgerasimov|Дмитрий Герасимов]] 20:38, 13 января 2012 (MSK)

Текущая версия на 23:43, 31 января 2019

Добавить анализ (почему именно log n) оценки для k.
«трудоёмкость» — бррр, асимптотика же.
Добавить псевдокод
писал кучу раз — псевдокод должен явно принимать входные данные и явно возвращать ответ. Тут я этого не наблюдаю.
не понимаю, в чем сложность сделать код одной функцией, без всякого ввода-вывода. ладно, хрен с ним.
аргумент после log не в скобках(done)
Насколько я помню, в c++, java и вообще большинстве ЯП log — это натуральный логарифм, пиши явно log2.(done)
cursuma и т.п. никуда не годится, используй camelCase.(done)
Зачем большие I и J?(done)
Что за precul? Во-первых, используй какой-то стиль именования переменных, во-вторых, calculation.(done)
log n округлено вверх, или вниз? Разберись и напиши в коде явно, создаётся ощущение что k — double.(done)
Для возведения в степень лучше использовать **, так как во многих языках программирования ^ — xor.(done) // ты таки написал (1 << k) вместо явного 2 ** k. В общем-то ладно, и в программе все сдвиг, конечно, юзают, но, имхо, псевдокод надо как можно более явным делать.
Зачем вообще всё написано словами? Считаешь скал. произведения - отображай это кодом(хотя бы функцией dotProduct), если хочешь — напиши коммент. В общем, слишком много слов в псевдокоде.(done)
Зачем раздел «постановка задачи»? Перемести это в шапку.
Зачем «Рассмотрим следующую задачу:»? Пиши сразу условие задачи, зачем его цитировать? А ещё точка ставится после закрывающей кавычки, а не перед.
Зачем такой маленький раздел «предподсчет»? Объедини его со сжатием матриц.
используй везде n одинакового размера
указать ссылки на какие-нибудь источники
добавить категории
Кстати, лучше подписываться. Я тоже забыл в прошлый раз, но всё же.

--Дмитрий Герасимов 07:57, 16 декабря 2011 (MSK)

Замечания АС

Оценка сложности и выбор k - немного перемудрили. Тут на самом деле нельзя асимптотически улучшить выбором k, но это непросто показать. Достаточно сказать, что выбрав k = \Omega(log n) получаем требуемую сложность
Код убрать или заменить на псевдокод
Нужен пример и, желательно, картинка"
Пример хороший, но все-таки, обозначь не 0, 1, 2, 3, а 00, 01, 10, 11, будет нагляднее. --Дмитрий Герасимов 23:37, 12 января 2012 (MSK)
опять умножение звездочкой. Кто еще обозначит умножение звездочкой в викиконспекте, отправлю в монастырь!
оформление источников сделать по-человечески
А зачем название жирным?
все также нет картинки общего метода
Здесь имеется в виду, что нужно описать еще и общий метод «четырех русских», так как он применяется не только для перемножения матриц. Почитай «Гасфилд — Деревья, строки и последовательности», там на стр. 369 написано про это, попробуй выделить общий метод и сделай какую-то схему/картинку. --Дмитрий Герасимов 07:34, 13 января 2012 (MSK)
Опять же, мне кажется, это не то что хочет Андрей Сергеевич. Ему нужна картинка _общео_ метода, а не перемножения матриц. --Дмитрий Герасимов 20:38, 13 января 2012 (MSK)