You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"ShortestCommonSupersequence": [Shortest Common Supersequence],
62
63
"MinimumSumMulticenter": [Minimum Sum Multicenter],
63
64
"SubgraphIsomorphism": [Subgraph Isomorphism],
64
65
"SubsetSum": [Subset Sum],
66
+
"FlowShopScheduling": [Flow Shop Scheduling],
65
67
)
66
68
67
69
// Definition label: "def:<ProblemName>" — each definition block must have a matching label
@@ -1038,6 +1040,66 @@ Biclique Cover is equivalent to factoring the biadjacency matrix $M$ of the bipa
1038
1040
*Example.* Let $A = {3, 7, 1, 8, 2, 4}$ ($n = 6$) and target $B = 11$. Selecting $A' = {3, 8}$ gives sum $3 + 8 = 11 = B$. Another solution: $A' = {7, 4}$ with sum $7 + 4 = 11 = B$.
1039
1041
]
1040
1042
1043
+
#problem-def("ShortestCommonSupersequence")[
1044
+
Given a finite alphabet $Sigma$, a set $R = {r_1, dots, r_m}$ of strings over $Sigma^*$, and a positive integer $K$, determine whether there exists a string $w inSigma^*$ with $|w| lt.eq K$ such that every string $r_i in R$ is a _subsequence_ of $w$: there exist indices $1 lt.eq j_1 < j_2 < dots < j_(|r_i|)lt.eq |w|$ with $w[j_k] = r_i [k]$ for all $k$.
1045
+
][
1046
+
A classic NP-complete string problem, listed as problem SR8 in Garey and Johnson @garey1979. #cite(<maier1978>, form: "prose") proved NP-completeness; #cite(<raiha1981>, form: "prose") showed the problem remains NP-complete even over a binary alphabet ($|Sigma| = 2$). Note that _subsequence_ (characters may be non-contiguous) differs from _substring_ (contiguous block): the Shortest Common Supersequence asks that each input string can be embedded into $w$ by selecting characters in order but not necessarily adjacently.
1047
+
1048
+
For $|R| = 2$ strings, the problem is solvable in polynomial time via the duality with the Longest Common Subsequence (LCS): if $"LCS"(r_1, r_2)$ has length $ell$, then the shortest common supersequence has length $|r_1| + |r_2| - ell$, computable in $O(|r_1| dot |r_2|)$ time by dynamic programming. For general $|R| = m$, the brute-force search over all strings of length at most $K$ takes $O(|Sigma|^K)$ time. Applications include bioinformatics (reconstructing ancestral sequences from fragments), data compression (representing multiple strings compactly), and scheduling (merging instruction sequences).
1049
+
1050
+
*Example.* Let $Sigma = {a, b, c}$ and $R = {"abc", "bac"}$. We seek the shortest string $w$ containing both $"abc"$ and $"bac"$ as subsequences.
1051
+
1052
+
#figure({
1053
+
letw= ("b", "a", "b", "c")
1054
+
letr1= ("a", "b", "c") // "abc"
1055
+
letr2= ("b", "a", "c") // "bac"
1056
+
letembed1= (1, 2, 3) // positions of a, b, c in w (0-indexed)
1057
+
letembed2= (0, 1, 3) // positions of b, a, c in w (0-indexed)
caption: [Shortest Common Supersequence: $w = "babc"$ (length 4) contains $r_1 = "abc"$ (blue, positions 1,2,3) and $r_2 = "bac"$ (teal, positions 0,1,3) as subsequences. Dots mark unused positions in each embedding.],
1098
+
) <fig:scs>
1099
+
1100
+
The supersequence $w = "babc"$ has length 4 and contains both input strings as subsequences. This is optimal because $"LCS"("abc", "bac") = "ac"$ (length 2), so the shortest common supersequence has length $3 + 3 - 2 = 4$.
1101
+
]
1102
+
1041
1103
#problem-def("MinimumFeedbackArcSet")[
1042
1104
Given a directed graph $G = (V, A)$, find a minimum-size subset $A' subset.eq A$ such that $G - A'$ is a directed acyclic graph (DAG). Equivalently, $A'$ must contain at least one arc from every directed cycle in $G$.
1043
1105
][
@@ -1046,6 +1108,77 @@ Biclique Cover is equivalent to factoring the biadjacency matrix $M$ of the bipa
1046
1108
*Example.* Consider $G$ with $V = {0, 1, 2, 3, 4, 5}$ and arcs $(0 arrow 1), (1 arrow 2), (2 arrow 0), (1 arrow 3), (3 arrow 4), (4 arrow 1), (2 arrow 5), (5 arrow 3), (3 arrow 0)$. This graph contains four directed cycles: $0 arrow 1 arrow 2 arrow 0$, $1 arrow 3 arrow 4 arrow 1$, $0 arrow 1 arrow 3 arrow 0$, and $2 arrow 5 arrow 3 arrow 0 arrow 1 arrow 2$. Removing $A' = {(0 arrow 1), (3 arrow 4)}$ breaks all four cycles (vertex 0 becomes a sink in the residual graph), giving a minimum FAS of size 2.
1047
1109
]
1048
1110
1111
+
#problem-def("FlowShopScheduling")[
1112
+
Given $m$ processors and a set $J$ of $n$ jobs, where each job $j in J$ consists of $m$ tasks $t_1 [j], t_2 [j], dots, t_m [j]$ with lengths $ell(t_i [j]) inZZ^+_0$, and a deadline $D inZZ^+$, determine whether there exists a permutation schedule $pi$ of the jobs such that all jobs complete by time $D$. Each job must be processed on machines $1, 2, dots, m$ in order, and job $j$ cannot start on machine $i+1$ until its task on machine $i$ is completed.
1113
+
][
1114
+
Flow Shop Scheduling is a classical NP-complete problem from Garey & Johnson (A5 SS15), strongly NP-hard for $m >= 3$@garey1976. For $m = 2$, it is solvable in $O(n log n)$ by Johnson's rule @johnson1954. The problem is fundamental in operations research, manufacturing planning, and VLSI design. When restricted to permutation schedules (same job order on all machines), the search space is $n!$ orderings. The best known exact algorithm for $m = 3$ runs in $O^*(3^n)$ time @shang2018; for general $m$, brute-force over $n!$ permutations gives $O(n! dot m n)$.
1115
+
1116
+
*Example.* Let $m = 3$ machines, $n = 5$ jobs with task lengths:
1117
+
$ell = mat(
1118
+
3, 4, 2;
1119
+
2, 3, 5;
1120
+
4, 1, 3;
1121
+
1, 5, 4;
1122
+
3, 2, 3;
1123
+
) $
1124
+
and deadline $D = 25$. The job order $pi = (j_4, j_1, j_5, j_3, j_2)$ (0-indexed: $3, 0, 4, 2, 1$) yields makespan $23 <= 25$, so a feasible schedule exists.
1125
+
1126
+
#figure(
1127
+
canvas(length: 1cm, {
1128
+
importdraw: *
1129
+
// Gantt chart for job order [3, 0, 4, 2, 1] on 3 machines
caption: [Flow shop schedule for 5 jobs on 3 machines. Job order $(j_4, j_1, j_5, j_3, j_2)$ achieves makespan 23, within deadline $D = 25$ (dashed red line).],
1179
+
) <fig:flowshop>
1180
+
]
1181
+
1049
1182
// Completeness check: warn about problem types in JSON but missing from paper
0 commit comments