<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.3 20210610//EN" "JATS-journalpublishing1-3.dtd">
<article article-type="research-article" dtd-version="1.3" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:lang="ru"><front><journal-meta><journal-id journal-id-type="publisher-id">mais</journal-id><journal-title-group><journal-title xml:lang="ru">Моделирование и анализ информационных систем</journal-title><trans-title-group xml:lang="en"><trans-title>Modeling and Analysis of Information Systems</trans-title></trans-title-group></journal-title-group><issn pub-type="ppub">1818-1015</issn><issn pub-type="epub">2313-5417</issn><publisher><publisher-name>Yaroslavl State University</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.18255/1818-1015-2018-2-155-164</article-id><article-id custom-type="elpub" pub-id-type="custom">mais-676</article-id><article-categories><subj-group subj-group-type="heading"><subject>Research Article</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="ru"><subject>Оригинальные статьи</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="en"><subject>Articles</subject></subj-group></article-categories><title-group><article-title>О рекурсивно-параллельном алгоритме решения задачи о рюкзаке</article-title><trans-title-group xml:lang="en"><trans-title>On а Recursive-Parallel Algorithm for Solving the Knapsack Problem</trans-title></trans-title-group></title-group><contrib-group><contrib contrib-type="author" corresp="yes"><contrib-id contrib-id-type="orcid">https://orcid.org/0000-0001-7882-8906</contrib-id><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Васильчиков</surname><given-names>Владимир Васильевич</given-names></name><name name-style="western" xml:lang="en"><surname>Vasilchikov</surname><given-names>Vladimir V.</given-names></name></name-alternatives><bio xml:lang="ru"><p>канд. техн. наук, зав. кафедрой вычислительных и программных систем</p></bio><bio xml:lang="en"><p>PhD</p></bio><email xlink:type="simple">vvv193@mail.ru</email><xref ref-type="aff" rid="aff-1"/></contrib></contrib-group><aff-alternatives id="aff-1"><aff xml:lang="ru"><institution>Ярославский государственный университет им. П.Г. Демидова</institution><country>Россия</country></aff><aff xml:lang="en"><institution>P.G. Demidov Yaroslavl State University</institution><country>Russian Federation</country></aff></aff-alternatives><pub-date pub-type="collection"><year>2018</year></pub-date><pub-date pub-type="epub"><day>20</day><month>04</month><year>2018</year></pub-date><volume>25</volume><issue>2</issue><fpage>155</fpage><lpage>164</lpage><permissions><copyright-statement>Copyright &amp;#x00A9; Васильчиков В.В., 2018</copyright-statement><copyright-year>2018</copyright-year><copyright-holder xml:lang="ru">Васильчиков В.В.</copyright-holder><copyright-holder xml:lang="en">Vasilchikov V.V.</copyright-holder><license xml:lang="ru" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>Данная работа распространяется под лицензией Creative Commons Attribution 4.0.</license-p></license><license xml:lang="en" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>This work is licensed under a Creative Commons Attribution 4.0 License.</license-p></license></permissions><self-uri xlink:href="https://www.mais-journal.ru/jour/article/view/676">https://www.mais-journal.ru/jour/article/view/676</self-uri><abstract><p>Предлагается эффективный параллельный алгоритм решения NP-полной задачи о рюкзаке в ее исходном, так называемом 0-1 варианте. Для нахождения ее точного решения издавна применяются алгоритмы, относящиеся к категории "методов ветвей и границ". Для ускорения получения результата с разной степенью эффективности применяются также различные варианты организации параллельных вычислений. Мы предлагаем здесь алгоритм решения задачи, основанный на парадигме рекурсивно-параллельных вычислений. Он представляется нам хорошо пригодным для задач такого рода, когда трудно сразу разбить вычисления на достаточное количество сравнимых по трудоемкости подзадач, поскольку она проявляется динамически во время вычислений. В качестве основного инструмента для программной реализации алгоритма использовалась разработанная автором библиотека RPM_ParLib, позволяющая создавать эффективные приложения для вычислений на локальной сети в среде .NET Framework. Такие приложения обладают способностью порождать параллельные ветви вычислений непосредственно во время выполнения программы и динамически перераспределять работу между вычислительными модулями. При этом в качестве языка программирования может использоваться любой язык с поддержкой .NET Framework. Для проведения экспериментов было написано несколько программ на языке C# с использованием упомянутой библиотеки. Основной целью этих экспериментов было исследование ускорения, достигаемого за счет рекурсивно-параллельной организации вычислений. Подробное описание алгоритма и эксперимента, а также полученные результаты приводятся в работе.          </p></abstract><trans-abstract xml:lang="en"><p>In this paper, we offer an efficient parallel algorithm for solving the NP-complete Knapsack Problem in its basic, so-called 0-1 variant. To find its exact solution, algorithms belonging to the category ”branch and bound methods” have long been used. To speed up the solving with varying degrees of efficiency, various options for parallelizing computations are also used. We propose here an algorithm for solving the problem, based on the paradigm of recursive-parallel computations. We consider it suited well for problems of this kind, when it is difficult to immediately break up the computations into a sufficient number of subtasks that are comparable in complexity, since they appear dynamically at run time. We used the RPM ParLib library, developed by the author, as the main tool to program the algorithm. This library allows us to develop effective applications for parallel computing on a local network in the .NET Framework. Such applications have the ability to generate parallel branches of computation directly during program execution and dynamically redistribute work between computing modules. Any language with support for the .NET Framework can be used as a programming language in conjunction with this library. For our experiments, we developed some C# applications using this library. The main purpose of these experiments was to study the acceleration achieved by recursive-parallel computing. A detailed description of the algorithm and its testing, as well as the results obtained, are also given in the paper.</p></trans-abstract><kwd-group xml:lang="ru"><kwd>задача о рюкзаке</kwd><kwd>параллельный алгоритм</kwd><kwd>рекурсия</kwd><kwd>.NET</kwd></kwd-group><kwd-group xml:lang="en"><kwd>Knapsack Problem</kwd><kwd>parallel algorithm</kwd><kwd>recursion</kwd><kwd>.NET</kwd></kwd-group></article-meta></front><back><ref-list><title>References</title><ref id="cit1"><label>1</label><citation-alternatives><mixed-citation xml:lang="ru">Гэри М., Джонсон Д., Вычислительные машины и труднорешаемые задачи, Мир, М., 1982.</mixed-citation><mixed-citation xml:lang="en">Garey M.R., Johnson D.S., Computers and Intractability: A Guide to the Theory of NP-Completeness, W. H. Freeman and Co, San Francisco, 1979.</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">Kellerer H., Pferschy U., Pisinger D., Knapsack Problems, Springer, Berlin, 2004.</mixed-citation><mixed-citation xml:lang="en">Kellerer H., Pferschy U., Pisinger D., Knapsack Problems, Springer, Berlin, 2004.</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">Martello S., Toth P., Knapsack Problems Algorithms and Computer Implementation, Wiley, New York, 1990.</mixed-citation><mixed-citation xml:lang="en">Martello S., Toth P., Knapsack Problems Algorithms and Computer Implementation, Wiley, New York, 1990.</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К., Алгоритмы: построение и анализ, Вильямс, М., 2006.</mixed-citation><mixed-citation xml:lang="en">Cormen T., Leiserson Ch., Rivest R., Stein C., Introduction to Algorithms, The MIT Press, 2001.</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">Land A. H., Doig A. G., “An Autmatic Method of Solving Discrete Programming Problems”, Econometrica, 28 (1960), 497–520.</mixed-citation><mixed-citation xml:lang="en">Land A. H., Doig A. G., “An Autmatic Method of Solving Discrete Programming Problems”, Econometrica, 28 (1960), 497–520.</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">Pisinger D., “An expanding-core algorithm for the exact 0-l knapsack problem”, Eur. J. Oper. Res., 87:1 (1995), 175–187.</mixed-citation><mixed-citation xml:lang="en">Pisinger D., “An expanding-core algorithm for the exact 0-l knapsack problem”, Eur. J. Oper. Res., 87:1 (1995), 175–187.</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">Pisinger D., “A fast algorithm for strongly correlated knapsack problems”, Discrete Applied Mathematics, 89:1–3 (1998), 197–212.</mixed-citation><mixed-citation xml:lang="en">Pisinger D., “A fast algorithm for strongly correlated knapsack problems”, Discrete Applied Mathematics, 89:1–3 (1998), 197–212.</mixed-citation></citation-alternatives></ref><ref id="cit8"><label>8</label><citation-alternatives><mixed-citation xml:lang="ru">Dantzig G. B., “Discrete Variable Extremum Problems”, Operation Ressearch, 5 (1957), 266–277.</mixed-citation><mixed-citation xml:lang="en">Dantzig G. B., “Discrete Variable Extremum Problems”, Operation Ressearch, 5 (1957), 266–277.</mixed-citation></citation-alternatives></ref><ref id="cit9"><label>9</label><citation-alternatives><mixed-citation xml:lang="ru">Посыпкин М.А., Сигал И.Х., “Комбинированный параллельный алгоритм решения задачи о ранце”, Труды четвертой международной конференции "Параллельные вычисления и задачи управления", 2008, 177–189.</mixed-citation><mixed-citation xml:lang="en">Posypkin M.A., Sigal I.Kh., “Kombinirovannyj parallelnyj algoritm reshenija zadachi o rance”, Proceedings of the Fourth International Conference "Parallel Computations and Control Problems", 2008, 177–189,(in Russian).</mixed-citation></citation-alternatives></ref><ref id="cit10"><label>10</label><citation-alternatives><mixed-citation xml:lang="ru">Васильчиков В.В., Средства параллельного программирования для вычислительных систем с динамической балансировкой загрузки, Ярославль, 2001.</mixed-citation><mixed-citation xml:lang="en">Vasilchikov V.V., Sredstva parallelnogo programmirovaniya dlya vychislitelnykh sistem s dinamicheskoy balansirovkoy zagruzki, Yaroslavl, 2001, (in Russian)</mixed-citation></citation-alternatives></ref><ref id="cit11"><label>11</label><citation-alternatives><mixed-citation xml:lang="ru">Васильчиков В.В., Коммуникационный модуль для организации полносвязного соединения компьютеров в локальной сети с использованием .NET Framework, Свидетельство о государственной регистрации программы для ЭВМ № 2013619925, 2013.</mixed-citation><mixed-citation xml:lang="en">Vasilchikov V.V., Kommunikatsionnyy modul dlya organizatsii polnosvyaznogo soedineniya kompyuterov v lokalnoy seti s ispolzovaniem .NET Framework, Svidetelstvo o gosudarstvennoy registratsii programmy dlya EVM № 2013619925, 2013, (in Russian).</mixed-citation></citation-alternatives></ref><ref id="cit12"><label>12</label><citation-alternatives><mixed-citation xml:lang="ru">Васильчиков В.В., Библиотека поддержки рекурсивно-параллельного программирования для .NET Framework, Свидетельство о государственной регистрации программы для ЭВМ № 2013619926, 2013.</mixed-citation><mixed-citation xml:lang="en">Vasilchikov V.V., Biblioteka podderzhki rekursivnoparallelnogo programmirovaniya dlya .NET Framework, Svidetelstvo o gosudarstvennoy registratsii programmy dlya EVM № 2013619926, 2013, (in Russian).</mixed-citation></citation-alternatives></ref><ref id="cit13"><label>13</label><citation-alternatives><mixed-citation xml:lang="ru">Васильчиков В.В., “О поддержке рекурсивно-параллельного программирования в .NET Framework”, Модел. и анализ информ. систем, 21:2 (2014), 15–25.</mixed-citation><mixed-citation xml:lang="en">Vasilchikov V.V., “On the Recursive-Parallel Programming for the .NET Framework”, Modeling and Analysis of Information Systems, 21:2 (2014), 15–25, (in Russian).</mixed-citation></citation-alternatives></ref><ref id="cit14"><label>14</label><citation-alternatives><mixed-citation xml:lang="ru">Васильчиков В.В., “Об оптимизации и распараллеливании алгоритма Литтла для решения задачи коммивояжера”, Модел. и анализ информ. систем, 23:4 (2016), 401– 411.</mixed-citation><mixed-citation xml:lang="en">Vasilchikov V.V., “On Optimization and Parallelization of the Little Algorithm for Solving the Travelling Salesman Problem”, Modeling and Analysis of Information Systems, 23:4 (2016), 401–411, (in Russian).</mixed-citation></citation-alternatives></ref></ref-list><fn-group><fn fn-type="conflict"><p>The authors declare that there are no conflicts of interest present.</p></fn></fn-group></back></article>
