Форум программистов, компьютерный форум, киберфорум
Численные методы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/47: Рейтинг темы: голосов - 47, средняя оценка - 4.66
 Аватар для azbest
42 / 42 / 18
Регистрация: 12.03.2013
Сообщений: 148

Задача о находжении минимального количества квадратов

09.02.2014, 04:28. Показов 10115. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан прямоугольник с целочисельными длинами сторон. Задача состоит в находжении минимального количества квадратов на которые можно разрезать данный прямоугольник.
Есть способ всегда "откусывать" квадрат наибольшей возможной площади, но он не дает минимальности.
Для примера 5х6 этот способ даст один квадрат со стороной 5 и 4-ре со сторнами 1.
Минимальное количество на самом деле: 2 по 3, и 3 по 2.
http://i.pixs.ru/storage/7/6/5... 799765.png
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.02.2014, 04:28
Ответы с готовыми решениями:

Представить число N суммой минимального количества квадратов
Входные данные - одно натуральное число N (1 ≤ N ≤ 10^6) Выходные данные - не более четырёх натуральных чисел, сумма квадратов которых...

Счетчик количества квадратов
Здравствуйте!!! Сейчас постараюсь объяснить что мне нужно. Допустим у меня есть 10 квадратов и счётчик количества этих самых квадратов. ...

Найти сумму квадратов максимального и минимального чисел массива
Найти сумму квадратов максимального и минимального чисел массива В(14)

12
 Аватар для azbest
42 / 42 / 18
Регистрация: 12.03.2013
Сообщений: 148
09.02.2014, 04:30  [ТС]
Дан прямоугольник с целочисельными длинами сторон. Задача состоит в находжении минимального количества квадратов на которые можно разрезать данный прямоугольник.
Есть способ всегда "откусывать" квадрат наибольшей возможной площади, но он не дает минимальности.
Для примера 5х6 этот способ даст один квадрат со стороной 5 и 4-ре со сторнами 1.
Минимальное количество на самом деле: 2 по 3, и 3 по 2.
http://i.pixs.ru/storage/7/6/5... 799765.png

 Комментарий модератора 
Правила, 4.12. Картинки и любые другие файлы загружайте на форум, во избежание их удаления или потери на сторонних ресурсах.
0
14 / 12 / 12
Регистрация: 23.12.2013
Сообщений: 84
09.02.2014, 07:22
откуда такая задача?

Добавлено через 19 минут
у меня появился такой вариант: дан квадрат прямоугольник nxm. n*m = k. вот у нас есть k (клеток, в примере на рисунке 30), что делаем - перебираем все варианты квадратов сверху вниз, начиная с корень из k, пытаясь заполнить пространство такими же квадратами, например: k = 30. 5 < sqrt(k) < 6. тогда начинаем с 5: 5*5 = 25. вычитаем из 30. получаем 5. и рекурсивно пытаемся заполнить квадратами эти 5: 2 * 2 + 1 * 1 = 5, но каким-то образом надо сделать проверку, что этот вариант нас не устраивает, тогда надо уменьшить "максимальный" квадрат, то есть 2x2 -> 1x1, и заполняем этот прямоугольник из 5.
Получили разложение 30 = 5x5 + 1x1 + 1x1 + 1x1 + 1x1 +1x1. Далее уменьшаем максимальный квадрат 5x5 -> 4x4, делаем то же самое: 30 = 4x4 + 14, 14 = 3x3 + 5.
Каким образом проверять, влезет ли - может, передавать длины и ширину прямоугльника. например:
30 = 5x5 + 5, тогда передаем для анализа прямоугольник со сторонами 5, 1. понятно, что 2x2 туда не влезет.
таким образом мы получим набор вариантов, и выберем с минимальным значением. как задачу выполнить без перебора, пока не знаю, может ни как.
вот как-то сумбурно написал, но вроде имею можно уловить.
0
 Аватар для azbest
42 / 42 / 18
Регистрация: 12.03.2013
Сообщений: 148
09.02.2014, 12:17  [ТС]
Перебором конечно можно. Тогда фактически задача сведется к представлению числа (площади прямоугольника S=MxN) в виде суммы чисел (правда только тех что сами являются квадратами натуральных чисел, но тогда количество возможных вариантов растет слишком быстро с ростом S.

Если НСД(M,N)=1, то вообще кошмар. Задача о разбиении числа. (http://ru.wikipedia.org/wiki/%... 0%BB%D0%B0)

Может наоборот начинать из наихудшего варианта и использовать диаграмму Юнга, но как.

________________________________________ ________________
а задача, можно сказать неоткуда)
0
Эксперт по математике/физике
4182 / 3052 / 918
Регистрация: 19.11.2012
Сообщений: 6,196
09.02.2014, 17:04
Хорошая задача. Видел оценки в книге Яглома Как "разрезать квадрат?", стр 87 и далее.
0
13 / 13 / 3
Регистрация: 09.01.2013
Сообщений: 82
09.02.2014, 17:56
Цитата Сообщение от azbest Посмотреть сообщение
Для примера 5х6 этот способ даст один квадрат со стороной 5 и 4-ре со сторнами 1.
Всё равно 5 квадратов получается ведь???? Не понял.... Дайте другой какой нить пример
0
 Аватар для azbest
42 / 42 / 18
Регистрация: 12.03.2013
Сообщений: 148
09.02.2014, 23:18  [ТС]
Цитата Сообщение от PoMa_HaB Посмотреть сообщение
Всё равно 5 квадратов получается ведь????
Извините там не 4, а 5-ть квадратов 1х1 и того в сумме 6.
0
 Аватар для azbest
42 / 42 / 18
Регистрация: 12.03.2013
Сообщений: 148
09.02.2014, 23:29  [ТС]
вот картинка с разрезами
0
14 / 12 / 12
Регистрация: 23.12.2013
Сообщений: 84
10.02.2014, 18:13
можно вычисления распараллелить и записывать кол-во слагаемых в общедоступную область памяти. и туда записывать минимальное значение слагаемых. если мы видим при вычислении, что кол-во слагаемых больше становится существующего значения, то прерываем. эти действия могут немного оптимизировать перебор, но это всё таки перебор
0
Эксперт по математике/физике
4182 / 3052 / 918
Регистрация: 19.11.2012
Сообщений: 6,196
11.02.2014, 13:17
Предлагаю алгоритм разбиения целочисленного прямоугольника со сторонами a и b на минимальное число квадратов, основанный на полном переборе.

1) Пусть a<b. Если a=b, то достаточно одного квадрата. Рассмотрим все возможные разбиения числа ab в сумму квадратов
https://www.cyberforum.ru/cgi-bin/latex.cgi?ab=v_1^2+\ldots+v_s^2, где https://www.cyberforum.ru/cgi-bin/latex.cgi?v_i - положительные числа, не превосходящие a,
не обязательно различные.
2) Для каждого такого разбиения числа ab проверяем можно ли выложить прямоугольник со сторонами a, b из квадратов со сторонами https://www.cyberforum.ru/cgi-bin/latex.cgi?v_i. Проверку делаем тоже полным перебором:
a) Каждый квадрат последовательно пытаемся уложить на прямоугольник.
b) Положение квадрата полностью определяется положением, скажем, левой верхней вершины. Эта вершина помещается в узел целочисленной сетки на прямоугольнике.
c) Если квадраты замощают прямоугольник, то найдено разбиение прямоугольника.
d) Переходим к следующему разбиению числа ab.
e) На каждом шаге число квадратов сравниваем с минимальным среди уже рассмотренных разбиений.
0
14 / 12 / 12
Регистрация: 23.12.2013
Сообщений: 84
12.02.2014, 11:03
да и вообще, метод откусывания дает неплохое приближение. его кол-во участвующих квадратов можно использовать для откидывания вариантов при переборе.
0
Эксперт по математике/физике
4182 / 3052 / 918
Регистрация: 19.11.2012
Сообщений: 6,196
12.02.2014, 20:10
Цитата Сообщение от school_bot Посмотреть сообщение
да и вообще, метод откусывания дает неплохое приближение. его кол-во участвующих квадратов можно использовать для откидывания вариантов при переборе.
Следуя Яглому, обозначим k(m,n) - минимальное число квадратов, замощающих прямоугольник mn.
Так вот известно, что k(32,33)<10. Метод откусывания однако дает лишь k(32,33)<34.

Предлагаю, такое сокращение перебора. Разбиваем одно из чисел так, чтобы свести дело к двум прямоугольникам меньших размеров.
Решить задачу для каждого из них и получить оценки.
Скажем для случая 32*33 имеем 33=16+17. Получаем два прямоугольника 16*32 и 17*32.
Очевидно, что k(16,32)=2 и можно аналогично продолжить для k(17,32).

Это как видно известная задача. Следил и здесь за обсуждением,
но сегодня появились комментарии, которых еще вчера не было видно. Кто понимает в чем дело?
0
14 / 12 / 12
Регистрация: 23.12.2013
Сообщений: 84
12.02.2014, 22:17
Цитата Сообщение от kabenyuk Посмотреть сообщение
Кто понимает в чем дело?
объединили одни и те же топики из разных разделов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.02.2014, 22:17
Помогаю со студенческими работами здесь

Вычислить сумму квадратов максимального и минимального элементов вектора
Помогите решить задачу. Спасибо! Дан вектор Хi, где i=1..n . Вычислить сумму квадратов максимального и минимального элементов вектора.

Поиск минимального количества совпадений
У меня есть код по поиску просто количества одинаковых чисел в активных текстбоксах по нажатию кнопки и вывод этого количества в label2: ...

Функция минимального количества изменений в массиве
Карл решил получить массив не включающий подмассив 010, для этого он может изменить 0 на 1 и наоборот. Необходимо напрограммировать функцию...

Определение минимального количества элементов последовательности
Навести фрагмент кода программы для определения минимального количества элементов последовательности 1/N=1.0.5,0.3333,0.25..... какие в...

Нахождение минимального количества букв подряд
Дана строка, найти наименьшее идущее подряд количество букв, но не менее 2 очень нужна ваша помощь


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru