<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Modification of the Permanent Decomposition Method for the Meeting Schedule Problem</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Yurii Turbal</string-name>
          <email>turbaly@gmail.com</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sergii Babych</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Larysa Bachyshyna</string-name>
          <email>l.d.bachyshyna@nuwm.edu.ua</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nataliia Kunanets</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nataliia Kovalchuk</string-name>
          <email>n.s.kovalchuk@nuwm.edu.ua</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>College of National University of Life and Environmental Sciences of Ukraine, Software engineering</institution>
          ,
          <addr-line>Kopernyka St., 44, Rivne, 33000</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Lviv Politechnic National University</institution>
          ,
          <addr-line>12 Bandera street, Lviv, Ukraine, 79013</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>National university of water and environmental engineering</institution>
          ,
          <addr-line>Soborna st.,11, Rivne, 33022, Ucraine</addr-line>
        </aff>
      </contrib-group>
      <abstract>
        <p>In this paper are considered meeting schedule problem and permanent decomposition methods (PD), which was investigated in reseant years. PD-approach to the combinatorial objects generetion is based on the procedure of the incidence matrices permanent decomposition with “memorization” ocfoluthmens identifier elements - process of the algebraic permanent decomposition by row includes addidional function for the column identifiers writing into corresponding data structures. In fact, algebraic permanent in not calculated, but we get a specific recursive algorithm for generating a combinatorial object. In this paper we present a new modification of the PD-algorithn which includes modification of the incidenсe matrix and procedure of the permanent decomposition. Our modification allows to build all possible variants of meeting schedules according to the system of different representatives, which cad be formed by the base PD-algorithm. For effective software implementation of the proposed modifications special additive-disjunctive forms is proposed. It it considered data structures and some aspect of the program realisation.</p>
      </abstract>
      <kwd-group>
        <kwd>1 Algorithm</kwd>
        <kwd>permanent</kwd>
        <kwd>decomposition</kwd>
        <kwd>sheduling</kwd>
        <kwd>ADF</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>The tasks of calendar planning have not lost their relevance in recent years, despite the presence
of a large number of theoretical results and practical approaches to their solution. Sheduling problems
is the most widely studied problems in computer sciense. There are wellknown Job-shop scheduling or
the job-shop problem, the nurse operations research problem of finding an optimal way to assign
nurses to shifts. We will consider only the most popular problem areas for the use of planning tasks.</p>
      <p>Job shop scheduling problem (JSP) is the core part of production management in job shop system.
The efficient completion of production tasks requires reasonable job shop scheduling. Therefore, the
study of job shop scheduling problem has very important theoretical significance and application
value. Job shop scheduling problem is one of the typical complex scheduling problems with high
complexity and difficulty. It has a strong engineering application background [1],[5].</p>
      <p>Task scheduling problem is the one of the most critical issues in cloud computing environment
because cloud performance depends mainly on it. There are various types of scheduling algorithms;
some of them are static scheduling algorithms that are considered suitable for small or medium scale
cloud computing; and dynamic scheduling algorithms that are considered suitable for large scale
cloud computing environments. Worth mentioning the most popular three static task scheduling
algorithms performance there are: first come first service (FCFS), short job first scheduling (SJF),
MAX-MIN. The CloudSim simulator has been used to measure their impact on algorithm complexity,
resource availability, total execution time (TET), total waiting time (TWT), and total finish time
(TFT) [2],[4].[8].</p>
      <p>In a Big data computing, the processing of data requires a large amount of CPU cycles and
network bandwidth and disk I/O. Dataflow is a programming model for processing Big data which
consists of tasks organized in a graph structure.Scheduling these tasks is one of the key active
research areas which mainly aims to place the tasks on available resources. It is essential to
effectively schedule the tasks, in a manner that minimizes task completion time and increases
utilization of resources. In recent years, researchers have discussed and presented different task
scheduling algorithms. Especially often there are scientific works in the areas the state-of-art of
various task scheduling algorithms, scheduling considerations for batch and streaming processing, and
task scheduling algorithms in the wellknown open-source big data platforms. Furthermore, this study
proposes a new task scheduling system to alleviate the problems persists in the existing task
scheduling for big data [3],[6],[8]].</p>
      <p>These are just a few areas of use of scheduling tasks, but among them we can trace the use of
algorithms, analogous to which is the algorithm in this article.</p>
      <p>The complexity of the corresponding algorithms in such problems is a critical parameter that
allows us to assess the possibility of using a particular algorithm in practice [1]. In particular, the
complexity of scheduling algorithms (NP-complete problems) was pointed out in [1], where is
proposing a solution by a method close to the exact method for a certain criterion of optimality,
because "the implementation of the tasks of scheduling by the method of search, as well as search
with return, is not effective" [2]. Therefore, in modern scientific works, heuristic approaches are
preferred, because the real size of the obtained problems does not yet allow to solve them in practice
with existing precise methods for quadratic programming problems. The results that this or that
ordering leads to differ significantly. In some practical cases, these differences are determined by
another value, or take a cost nature.</p>
      <p>In the paper [1] were considered meeting schedule problem and was proposed the algorithm of the
meeting schedule construction which is based on the procedure of incidence matrix decomposition. In
the paper [2] were considered a similar aprouch to the generation of generalized combinatorial objects
of special structure that are well suited for some scheduling tasks (schedule of meetings). At the heart
of this approach are procedures for the permanent decomposition of incidence matrices with
memorization of identifier elements. This approuch was called PD-method. Main rezult of
PDprocedure was creation the system of different representatives of the list of sets. In this paper we
present a new modification of thePD-algorithn which includes modification the incidence matrix
construction and procedure of the permanent decomposition. The new modification allows to build all
possible variants of schedules according to the system of different representatives. For effective
software implementation of the proposed modifications, the use of special additive-disjunctive forms is
proposed.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Main idea of the PD-algorithm modification</title>
      <p>Let consider m teams which must met whith the n single persons (teachers, project
managers, SCRAM-masters ect.) P1 , P2 ,...,Pn during any period of time T. It is known the
times of possible meetings for every day and numbers of meetings for every person whith
appropriated teams. Obviously, the schedule can be represented in the form of the matrix, in
which the columns can be matched by teams, rows-time indicators, and the elements of the
matrix will be identifiers (numbers) of persons:</p>
      <p>We will call such a matrix a matrix of schedules. If we consider the columns of the matrix
S, we get sets and the occurrence of the same element several times is allowed.
Information about which elements are included in the corresponding sets will be given in the
incidence matrix of the form:
(</p>
      <p>)
{
where</p>
      <p>̅
columns of the incidence matrix.</p>
      <p>. The elements
will be called the identifiers of the</p>
      <p>Identifier elements are devided on regular and stream . If the element is “stream,”
then it must be simultaneously written in all positions of the sample vector, where the
correspondent incidence matrix column contains non-zero elements.
. The system of different representatives (SDR) will be called a vector of the form:
( ), .</p>
      <p>An arbitrary vector of samples( or a matrix, the rows of which are samples) will be
called a schedule .</p>
      <p>The schedule (( ) ( ) ( )) will be
considered correct under the conditions :
*
}
*
+
…</p>
      <p>},
, elements
are non-stream.</p>
      <p>
        Note that incidence matrix (
        <xref ref-type="bibr" rid="ref1">1</xref>
        ) does not provide comprehensive information for scheduling.
Therefore, consider a modification of the incidence matrix, whisукthуe number of occurrences
of the element in the set .
      </p>
      <p>
        Suppose, for example, that we have a schedule matrix of the form:
(
)
(
        <xref ref-type="bibr" rid="ref3">3</xref>
        )
Than we have such incidene matrix:
(
        <xref ref-type="bibr" rid="ref4">4</xref>
        )
4 
      </p>
      <p>
0 </p>
      <p>
1 </p>
      <p>Let's build the process of decomposition of the modified permanent with "memorization" on the
first line:
permod 1</p>
      <p>
1 1</p>
      <p>
2  0</p>
      <p>
3 1
1п
1
1
1
2
1
0
0
3
0
2
0
4  =111  permod  2</p>
      <p> 
0  2  0</p>
      <p> 
0  3  0</p>
      <p>
1 
3
2
0</p>
      <p>п
4  +111 1 +112  permod 1</p>
      <p> 
0  2  0</p>
      <p> 
1  3 1
3
2
0
(</p>
      <p>)
п
=111  ( 232 permod  2 4  ) +111 1 +112  ( 2 32 permod 1 4  ) =111232134 111</p>
      <p>   
3  01  3 11 </p>
      <p>
        Thus, SDR are:{(
        <xref ref-type="bibr" rid="ref1 ref3 ref4">1,3,4</xref>
        ),( 1 п ),(
        <xref ref-type="bibr" rid="ref1 ref2 ref3">2,3,1</xref>
        ),(
        <xref ref-type="bibr" rid="ref2 ref3 ref4">2,3,4</xref>
        )}.
      </p>
      <p>Consider in more detail the procedure of decomposing the permanent. Note that the non-zero
element in the row of the matrix in the first step means that the corresponding component must be
present in the schedule. The first group must contain elements 1,2, 1 п .,. Then in the process of
decomposition is branching and various situations arise. In the process of calculating the permanent,
we simply use the operation of adding +. However, from the point of view of constructing a schedule,
the logic of the addition operation is completely different here, it actually means "disjunction", the
possibility of choosing one of the options for SDR. If an element with a value greater than 1 is
multiplied, the situation of inclusion of several components is possible. For example, in the expression
means the mandatory inclusion of both components,
232 permod 14  232 *113  232 *134 addition</p>
      <p> 
311 
because 3 is included twice, the element of the incidence matrix is 2. At the same time, in the
expression 132 permod 14  132 *113  132 *134 addition means choice of one of two options, because
 
311 
element 3 is used only once.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Additive-disjunctive forms (ADF) and they properties.</title>
      <p>Thus, we have two operations: selection and mandatory inclusion. An expression containing
elements(string) using the specified operations will be called an additive-disjunctive form(ADF). In
the future, the selection operation will be marked with the  icon. In addition, when using the
corresponding column element, which corresponds to a non-zero element of the incidence matrix, for
mandatory inclusion, we can reduce the value of the element of the incidence matrix by 1. Therefore,
132 per mod 1 4  132 * 113  132 * 134 ,</p>
      <p> 
3 11 
2 32 per mod 1 4  132 * 113  132 * 134 ,</p>
      <p> 
3 11 
132 per mod 1 4 5  132 * 113  132 * 134  132 * 153  ADF  132 * 113  132 * 134  132 * 153 ,</p>
      <p> 
3 111 </p>
      <p>Therefore, the value of the incidence matrix element is equal to the number of inclusions of the
corresponding index in the final ADF in the expressions of mandatory inclusion. Therefore, in the
case when the value of the multiplier element is less than the number of non-zero elements of the
decomposition line, we have options for interpreting the initial sum in the form of ADF. Thus, ADF is
an expression that includes strings elements and two operations: + mandatory inclusion and binary
selection .</p>
      <p>Let us consider a simple properties of ADF:
1. a  a  a ;
2. a  a  {a, a};
3. a  b  b  a ;
4. a  b  b  a ;
5. a  b  c  (a  b)  (a  c) ;
6. (a  b)  (a  c)  a  b  c ;
7.</p>
      <p>a  b  c  d  e  (a  b)  (a  c)  d  e  (a  b  d  e)  (a  c  d  e) 
 (a  b  d )  (a  b  e)  (a  c  d )  (a  c  e).
4. Algorithms of the correct schedule ADF construction.</p>
      <p>permod 1</p>
      <p>
1 1 1</p>
      <p>
2  0 1</p>
      <p>
3 1 1
2 3 4  =111  permod  2
1 0 0  2  0
0 2 0  3  0</p>
      <p>
0 0 1 </p>
      <p>Now we can modify the permanent decomposition procedure to get the correct ADF. To do this, at
each iteration of the permanent decomposition we will analyze the occurrence of the same elements in
all components of the mandatory inclusion. Obviously, the condition must be met - the total number
of occurrences of the element in the block of mandatory inclusion should be equal to its index. If this
condition is found to be violated, the mandatory inclusion block will be considered invalid and should
be removed. Let consider previous example and build correct ADF:
п
1п 3 4  +111 1 +112  permod 1 3 4  =
2 0  2  0 2 0 </p>
      <p>  
0 1  3 1 0 1 
п
=111  ( 232 permod  2 4  ) +111 1 +112  ( 2 32 permod 1 4  ) =</p>
      <p>   
3 01  3 11 
п
111  (132 permod  2 4  ) +111 1 +112  (132 permod 14  ) =111132134 111</p>
      <p>   
3  01  3 11 
п</p>
      <p> 112132113  112132134 .=
п п п
= (111132134 111  112132113 )  (111132134 111  112132134 ) 111132134 111  112132113.</p>
      <p>In the process of decomposition, in the last step, incorrect mandatory inclusion blocks are
п
removed. In last example such block is 111132134 111  112132134 .</p>
      <p>If we apply a recursive algorithm for the decomposition of the permanent, then in this case it is
difficult to implement control of the occurrence of the corresponding elements in the blocks of
mandatory inclusion. Therefore, the approach described above in the recursive organization of the
program is difficult to implement. Consider a slightly different approach. We will build ADF on the
basis of the already built system of PSA. With this approach, it is good to adhere to the OOP
paradigm.</p>
      <p>We can modified procedure of ADF creation using list of all correct SDR, creating by base
procedure of permanent decomposition. Thus we can propose algorithm of generation all correct
variants of schedule using ADF (we call this algarithm ADF-algorithm):
1. Formation of the initial general block.</p>
      <p>1.1 Review the first row of the incidence matrix and find all non-zero elements and their identifiers
(corresponding elements of the zero row of the incidence matrix). The list of SDR is divided into
groups, each SPRS from one group contains the first identical elements-identifiers.
1.2 The sign of obligatory inclusion + is put between groups.</p>
      <p>1.3 If the index of the corresponding element of the first line is 1, then a selection operation is
placed between all elements of the group. Otherwise, all possible combinations of group elements are
formed, which are connected by the oleration +, the number of SDR in which is equal to the index of
the element, between which the selection operation is placed.</p>
      <p>2. Second line analysis.</p>
      <p>2.1 Consider the second row of the incidence matrix, similarly determine the non-zero elements
and their identifiers.</p>
      <p>2.2 For each non-zero element :
2.2.1 Determine in which SDR list it is present. Then we determine all possible options so that it is
included depending on its index. To do this, number all SDR, where the second is our running
element, consider all possible combinations with SDRS, containing our second element and the
number of which is equal to its index and check the required number of its occurrences, taking into
account the operations of mandatory inclusions. index.</p>
      <p>2.2.2 For each selected correct combination we form a new general block, which is built in the
following way - from each disjunctive block containing SDR with our second element, include only
selected in this combination SDR, and all others containing our second element are removed.</p>
      <p>3. Next, similarly analyzed the third line, fourth, etc. Moreover, the condition of the correct
occurrence of each element is analyzed for each common block.</p>
      <p>Thus, the modification of the procedure of decomposition of the permanent incidence matrix by
constructing ADP allows to obtain all possible correct variants of schedules. The proposed procedure
solves not only the problem of matching the schedule elements in the rows, but also immediately
obtain the required number of identical elements in the columns in accordance with the input data
recorded in the modified incidence matrix.</p>
      <p>
        Let’s consider an
incidence matrix (
        <xref ref-type="bibr" rid="ref5">5</xref>
        ).
1. Analysis of the first row of the incidence matrix:
      </p>
      <p>
        {[(
        <xref ref-type="bibr" rid="ref1 ref3 ref4">1,3,4</xref>
        ) ]+[(
        <xref ref-type="bibr" rid="ref1 ref1 ref1">1,1,1</xref>
        )]+ [ (
        <xref ref-type="bibr" rid="ref1 ref2 ref3">2,3,1</xref>
        ) (
        <xref ref-type="bibr" rid="ref2 ref3 ref4">2,3,4</xref>
        )]}.
2. Second row:
      </p>
      <p>
        1п :{[(
        <xref ref-type="bibr" rid="ref1 ref3 ref4">1,3,4</xref>
        )]+[(
        <xref ref-type="bibr" rid="ref1 ref1 ref1">1,1,1</xref>
        )]+ [ (
        <xref ref-type="bibr" rid="ref1 ref2 ref3">2,3,1</xref>
        ) (
        <xref ref-type="bibr" rid="ref2 ref3 ref4">2,3,4</xref>
        )]},
3: {[(
        <xref ref-type="bibr" rid="ref1 ref3 ref4">1,3,4</xref>
        ) ]+[(
        <xref ref-type="bibr" rid="ref1 ref1 ref1">1,1,1</xref>
        )]+ [ (
        <xref ref-type="bibr" rid="ref1 ref2 ref3">2,3,1</xref>
        )]}  {[(
        <xref ref-type="bibr" rid="ref1 ref3 ref4">1,3,4</xref>
        ) ]+[(
        <xref ref-type="bibr" rid="ref1 ref1 ref1">1,1,1</xref>
        )]+ [ (
        <xref ref-type="bibr" rid="ref2 ref3 ref4">2,3,4</xref>
        )]}.
3. Third row:
1: {[(
        <xref ref-type="bibr" rid="ref1 ref3 ref4">1,3,4</xref>
        ) ]+[(
        <xref ref-type="bibr" rid="ref1 ref1 ref1">1,1,1</xref>
        )]+ [ (
        <xref ref-type="bibr" rid="ref1 ref2 ref3">2,3,1</xref>
        )]}  {[(
        <xref ref-type="bibr" rid="ref1 ref3 ref4">1,3,4</xref>
        ) ]+[(
        <xref ref-type="bibr" rid="ref1 ref1 ref1">1,1,1</xref>
        )]+ [ (
        <xref ref-type="bibr" rid="ref2 ref3 ref4">2,3,4</xref>
        )]},
1п :{[(
        <xref ref-type="bibr" rid="ref1 ref3 ref4">1,3,4</xref>
        ) ]+[(
        <xref ref-type="bibr" rid="ref1 ref1 ref1">1,1,1</xref>
        )]+ [ (
        <xref ref-type="bibr" rid="ref1 ref2 ref3">2,3,1</xref>
        )]}  {[(
        <xref ref-type="bibr" rid="ref1 ref3 ref4">1,3,4</xref>
        ) ]+[(
        <xref ref-type="bibr" rid="ref1 ref1 ref1">1,1,1</xref>
        )]+ [ (
        <xref ref-type="bibr" rid="ref2 ref3 ref4">2,3,4</xref>
        )]},
4: {[(
        <xref ref-type="bibr" rid="ref1 ref3 ref4">1,3,4</xref>
        ) ]+[(
        <xref ref-type="bibr" rid="ref1 ref1 ref1">1,1,1</xref>
        )]+ [ (
        <xref ref-type="bibr" rid="ref1 ref2 ref3">2,3,1</xref>
        )]} .
      </p>
      <p>
        exampWle.e have system of SDR: {(
        <xref ref-type="bibr" rid="ref1 ref3 ref4">1,3,4</xref>
        ),(
        <xref ref-type="bibr" rid="ref1 ref1 ref1">1,1,1</xref>
        ), (
        <xref ref-type="bibr" rid="ref1 ref2 ref3">2,3,1</xref>
        ), (
        <xref ref-type="bibr" rid="ref2 ref3 ref4">2,3,4</xref>
        )},
      </p>
    </sec>
    <sec id="sec-4">
      <title>5. Data structures and program realisation</title>
      <p>In accordance with our algorithm, to store information about all schedule options, we will use a
list of instances of the class, which should contain information about the corresponding SDR, as well
as symbols of ADF operations and possible parentheses that define disjunctive blocks. We can use
C++ notation and create class ADF:
class ADF
{
public:
SDR* context;
char * after;
char * before;
ADF *next;
int delflag;
ADF()
{after=new char[2];
before=new char[2];
delflag=0;
}
};
class SDR
{ public:
int nlast;
int nmax;
char *s;
SDR *next;
SDR()
{
s=new char [20];
nlast=0;
next=NULL;
}</p>
      <p>}
For the matrix of incidence, we can use class incydent :
class incydent
{ public:
int nmaxrow, nmaxcol, **r;
incydent(int nrow, int ncol)
{ // class body
}
incydent(void){}
~incydent()
{//class body }
};</p>
      <p>In class ADF we must store additional information about symbols of ADF operations and possible
parentheses and use arrays before[2] and after[2]. Field delflag we can use as a flag,that informs about
deleting this element at last step of our algorithm. Let’s consider the main functions of our software
implementation.</p>
      <p>Function ADF* startgener (SDR *head) generates the initial ADP from the list of SDR, analyzing
the first elements of the lines of SDR:</p>
      <p>ADF* startgener (SDR *head)
{
ADF *rez;
ADF* last=new ADF;
SDR* lasthead=head;
last-&gt;before[1]='(';
if(head!=NULL) last-&gt;context=head;
last-&gt;next=NULL;
rez=last;
head=head-&gt;next;
while(head!=NULL)
{
ADF* current=new ADF;
current-&gt;context=head;
current-&gt;next=NULL;
int i=0,j=0;
while(lasthead-&gt;s[i]==lasthead-&gt;s[i+1]) i++;
while(head-&gt;s[j]==head-&gt;s[j+1]) j++;
if((lasthead-&gt;s[0]==head-&gt;s[0]) &amp;&amp; (i==j))
{
last-&gt;after[1]='v';
current-&gt;before[0]='v';
}
else
{ last-&gt;after[0]=')';
last-&gt;after[1]='+';
current-&gt;before[0]='+';
current-&gt;before[1]='0';
}
last-&gt;next=current;
last=current;
lasthead=head;
head=head-&gt;next;
if(head-&gt;next==NULL) current-&gt;after[0]=')';
}
return rez;
}</p>
      <p>Function int ident(int m,int j,SDR* si, incydent* pi) analizes SDR and checks stream
correctness:
int ident(int m,int j,SDR* si, incydent* pi)
{ if(si-&gt;s[j]==pi-&gt;r[0][j])
{if((j&gt;0)&amp;&amp;(pi-&gt;r[0][j]!=pi-&gt;r[0][j-1] )|| (j==0))
return 1;
else
{for(int k=1;k&lt;pi-&gt;nmaxrow;k++)
if((pi-&gt;r[k][j]&gt;0)&amp;&amp;(si-&gt;s[k-1]!=pi-&gt;r[0][j])) return 0;
return 1;
}}}</p>
      <p>Function int generlexc(int n,int k, int *mas) generates the next closest combination of the mas in in
lexicographic order.</p>
      <p>Function int goodblock(ADF* head, int *mas, int k, int m,int j,incydent* pi) checks whether 2
SDRs falls into one disjunctive subblock and also whether the index for quantity of correct occurrences
is not bigger.</p>
      <p>Function ADF* copyblock(ADF* startblock) copies the block of obligatory inclusion at once for
startblock .</p>
      <p>Function void genernewblock (int m,int j, int* mas,int size,ADF* startblock, incydent* pi)
generates a new block with the inclusion of elements in accordance with the selected combination of
mas numbers of the SDRs elements to be included. It works after goodblock .</p>
      <p>Function ADF* nextblockadr(ADF* head) returns the start address of the next block of mandatory
inclusion or NULL</p>
      <p>Function int mjgeneric(ADF* head ,incydent* pi,int m,int j) generates all blocks of mandatory
inclusion on the m-j element of the matrix incidence and writes after head:</p>
      <p>int mjgeneric(ADF* head ,incydent* pi,int m,int j)
{
if(pi-&gt;r[m][j]&gt;0)
{
while(head!=NULL)
{ADF* tmp=head;
ADF* nexthead =nextblockadr(head);
int kv=0;
while(tmp!=nexthead)
{
if(ident(m,j,tmp-&gt;context, pi)==1) kv++;
tmp=tmp-&gt;next;
}
int index=pi-&gt;r[m][j];
int *nu=new int[index];
for(int fi=0;fi&lt;index;fi++) nu[fi]=fi;
for(int i=0;i&lt;factorial(kv)/( factorial(index)* factorial(kv-index));i++ )
{tmp=head;
if(goodblock(tmp, nu, index, m, j, pi))
genernewblock( m,j,nu,index,tmp,pi);
generlexc(kv,index,nu);
} //end for
head=nexthead;
head-&gt;delflag=1;
}}}</p>
      <p>Function ADF* ostgeneric(SDR* head, incydent* pi) realizes full procedure of the schedule
generation:</p>
      <p>ADF* ostgeneric(SDR* head, incydent* pi)
{ADF* rozklad=startgener(head);
for(int j=0;j&lt;pi-&gt;nmaxcol;j++)
for(int m=1;m&lt; pi-&gt;nmaxrow;m++)
if(pi-&gt;r[m][j]&gt;0)
{mjgeneric(rozklad,pi,m,j);
if((j&gt;0)&amp;&amp;(pi-&gt;r[0][j]==pi-&gt;r[0][j-1]))
{for(int k=m;k&lt;pi-&gt;nmaxrow;k++)
if(pi-&gt;r[k][j]&gt;0) pi-&gt;r[k][j]=0;}
}
ADF* current=rozklad;
while(current-&gt;next-&gt;next!=NULL)
{
if(current-&gt;next-&gt;delflag==1) {
ADF* tmp= current-&gt;next-&gt;next;
delete current-&gt;next;
current-&gt;next=tmp;}
}
return rozklad;
}</p>
    </sec>
    <sec id="sec-5">
      <title>6. Conclusions</title>
      <p>Thus, the paper considers a modification of the PD algorithm for generating systems of different
representatives, which allows to immediately obtain all possible admissible schedules. Our
modification is based on the use of special forms, which we called additive-disjunctive forms. Such
forms can be useful for a wide range of tasks of generating combinatorial objects, scheduling. Clear
algorithms are proposed for constructing meeting schedules based on ADF, one of which uses a
system of different representatives (SDR) as input data, which is built on the basis of a basic
PDalgorithm. This approach easily fits into the object-oriented programming paradigm [9] ,[10] and can
be easily implemented using any object-oriented programming language.</p>
    </sec>
    <sec id="sec-6">
      <title>7. References</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Yu</given-names>
            <surname>Yingchen</surname>
          </string-name>
          ,
          <source>A Research Review on Job Shop Scheduling Problem. E3S Web of Conferences. International Conference on Environmental and Engineering Management</source>
          <volume>253</volume>
          (
          <year>2021</year>
          ). doi:
          <volume>10</volume>
          .1051/e3sconf/202125302024.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>T.</given-names>
            <surname>Aladwani</surname>
          </string-name>
          ,
          <article-title>Types of Task Scheduling Algorithms in Cloud Computing Environment</article-title>
          , in: Rodrigo da Rosa Righi, Scheduling Problems - New Applications and Trends, IntechOpen, United Kingdom, London,
          <year>2020</year>
          . doi:
          <volume>10</volume>
          .5772/intechopen.86873.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>K.</given-names>
            <surname>Govindarajan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Kamburugamuve</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Wickramasinghe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Abeykoon</surname>
          </string-name>
          , G. Fox, Task Scheduling in Big Data - Review, Research Challenges, and Prospects, in: Ninth International Conference on Advanced Computing,
          <year>2017</year>
          . doi:
          <volume>10</volume>
          .1109/ICoAC.
          <year>2017</year>
          .
          <volume>8441494</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>A.</given-names>
            <surname>Khalfay</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Crispin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K. A.</given-names>
            <surname>Crockett</surname>
          </string-name>
          ,
          <article-title>A review of technician and task scheduling problems, datasets and solution approaches</article-title>
          ,
          <source>in: Intelligent Systems Conference (IntelliSys)</source>
          ,
          <source>Computer Science</source>
          ,
          <year>2017</year>
          . doi:
          <volume>10</volume>
          .1109/INTELLISYS.
          <year>2017</year>
          .8324306
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>B.</given-names>
            <surname>Peng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Lu</surname>
          </string-name>
          , T.C.E. Cheng,
          <article-title>A tabu search/path relinking algorithm to solve the job shop scheduling problem-</article-title>
          <source>Computers &amp; Operations Research</source>
          , Elsevier Science Publishing Company, United Kingdom, London,
          <year>2016</year>
          . doi:10/1016/j.cor.
          <year>2014</year>
          .
          <volume>08</volume>
          .006.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>L.</given-names>
            <surname>Williams</surname>
          </string-name>
          ,
          <source>CPU Scheduling Algorithms in Operating Systems</source>
          ,
          <year>2021</year>
          . URL: https://www.guru99.
          <article-title>com/cpu-scheduling-algorithms</article-title>
          .html.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>L.</given-names>
            <surname>Kuang</surname>
          </string-name>
          ,
          <string-name>
            <surname>L. Zhang,</surname>
          </string-name>
          <article-title>A new task scheduling algorithm based on value and time for cloud platform</article-title>
          ,
          <source>AIP Conference Proceeding</source>
          <year>1864</year>
          (
          <year>2017</year>
          ). doi:10/1063/1.4992834.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>E. C.</given-names>
            da
            <surname>Silva</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. H. R.</given-names>
            <surname>Gabriel</surname>
          </string-name>
          ,
          <article-title>A Comprehensive Review of Evolutionary Algorithms for Multiprocessor DAG Scheduling, Computation</article-title>
          ,
          <string-name>
            <surname>MPDI</surname>
          </string-name>
          ,
          <year>2020</year>
          ,
          <volume>8</volume>
          , 26 р.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>B.</given-names>
            <surname>Stroustrup</surname>
          </string-name>
          :
          <article-title>A Tour of C++ (Second Edition)</article-title>
          ,
          <source>Addison-Wesley</source>
          ,
          <year>2018</year>
          , 240 p.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>B.</given-names>
            <surname>Stroustrup: Programming --Principles and Practice Using C+</surname>
          </string-name>
          <article-title>+ (Second Edition)</article-title>
          ,
          <source>AddisonWesley</source>
          ,
          <year>2014</year>
          , 1312 p.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>