首页 >
> 详细

Computer Science 720S1C – (2022)

Assignment 2 (Trees and Treewidth)

Due: Saturday, April 16

Requirements

This assignment deals with trees and graphs of bounded treewidth. The first part tests your under-

standing of rooted tree isomorphism and the second part has you develop a linear-time algorithm (for

graphs of bounded treewidth) for a known NP-hard graph optimization problem.

You will submit your source code to https://www.automarker.cs.auckland.ac.nz/. If you have not

used the automarker before, please read the help/FAQ page.

Determine Tree Groups

We want to group together the same rooted trees from a collection of rooted trees. In general we have

the following constraints:

The root node always remains in this position, i.e., as root.

Each other node remains connected to its original parent node.

Each node (root or not) branches out to the same set of nodes but the order of outgoing branches

may change in an arbitrary way.

Thus, in the following diagram, the trees (a) and (b) could represent the same tree, but the trees

represented in (c) and (d) are certainly different. The roots are labeled by 0 in this example.

1

We want to write a program that will identify matching trees (rooted tree isomorphism) under these

reshuffling rule, i.e., trees that could represent the same tree. This matching is an equivalence relation

and the problem can be solved by annotating each tree with the number of its equivalence class. Your

task is to determine which trees are equivalent.

Input Format

Input (from stdin) consists of a number of scenarios, with each scenario consisting of a number of trees.

Each scenario starts with a line containing a single number, n (1 ≤ n ≤ 100) specifying the number of

trees in the scenario, followed by n descriptions. Each description consists of a number k (1 ≤ k ≤ 1000)

specifying the number of nodes in the tree, followed by k numbers specifying the parent of each node in

turn (using ?1 for the root node, which has no parent). Each tree is implicitly numbered by its position

in this list. The sequence of scenarios is terminated by an empty scenario, i.e., a line containing only a

zero (‘0’).

Output Format

Output (to stdout) consists of one line for each scenario, starting with a scenario sequence number (0

based), a colon (‘:’), a space, and followed by a succession of class numbers, one for each tree, in input

order, and separated by single spaces. All trees in a matching class are annotated by the same class

number. Class numbers are allocated successively in input tree order, starting with 0, and increased by

1 at the first occurrence of an tree not matching any of the previous.

Sample Input and Output

Input Output

Chromatic Sum

For this part, you will do some basic programming regarding the t-parse representation of graphs.

We use the following t-parse input format for graphs of bounded treewidth. The first token will be an

integer 0 ≤ t ≤ 9 denoting the pathwidth/treewidth of the graph (i.e., it indicates a t-parse will follow).

The interpretation for the remaining tokens are given in the next table.

token semantic meaning

i a vertex operator i, represented as an integer, where 0 ≤ i ≤ t ≤ 9

ij an edge operator (i, j) where t ≥ i > j ≥ 0 (note: no space between i and j)

( a begin marker for a pathwidth t-parse (can be nested for treewidth t-parses)

) an end marker for a pathwidth/treewidth t-parse

Thus, if you read/encounter the two tokens ‘)’ and ‘(’ in sequence then this denotes a circle plus ⊕

operator. Note that it is guaranteed that each right token ‘(’ will have a matched left token ‘)’. Each

’(’ except first token must be preceded by a parenthesis and ’)’ may be succeeded “up the parse tree”

by pathwidth operators. We assume boundary vertices 0, 1, . . . , t precede the first token of a pathwidth

t-parse (and these empty boundaried graph axioms are not given in the input format). Assume left-

associativity for all operators and at least one space between each of them, including the parentheses.

Input will consist of several test cases, each on its own line. The input is terminated by a t = 0 case,

which is also processed.

For this part of the assignment you will learn how to exploit the structure of bounded pathwidth/treewidth

for a known NP-hard graph problem: 3-ChromaticSum. For input graph of bounded pathwidth or

treewidth in t-parse representation as described above, decide if it can be colored with at most 3 colors

and if so output its chromatic sum, otherwise output ‘None’ .

A graph G = (V,E) is 3-colorable if there is a function (e.g. proper coloring) f : V → {1, 2, 3} such

that for all (u, v) ∈ E we have f(u) 6= f(v). The chromatic sum of a graph G is the minimum sum

Σv∈V f(v) of a proper coloring f of G. Note the minimum number of colors needed (chromatic number)

may not necessarily correspond with its minimum chromatic sum as shown in the following example.

The 2-coloring on the left has a sum of 12 while the 3-coloring on the right has a smaller sum of 11.

3

Sample Input/Output

Typical input instances and expected output of the two problems are shown below. Note that you can

assume that each input graph fits on one line.

Sample input

2 ( 10 21 1 10 21 0 10 20 2 20 21 )

2 ( ( 10 21 1 10 21 1 21 10 ) ( 21 2 21 20 ) ( 10 ) )

4 ( ( 10 20 30 41 4 41 31 ) ( ( 40 21 32 42 ) ( 10 0 43 10 20 ) ) )

0 ( ( 0 ) ( 0 0 ) )

Sample output

Submission and Marks

All input should be taken from the keyboard (stdin) and output to the console (stdout). This assignment

is worth 10% of your final grade. Marks (out of a total 10) for each part’s test cases are specified on

the automarker scoreboard. Note that your final grade may be marked with more difficult test cases

than what is provided to the automarker. If you exceed 8 submissions per any problem test case then

a 20% deduction will occur (on that case) if you eventually get it correct. Partial marks may be given

later so try to submit something even if you know it is not 100% correct.

联系我们

- QQ：99515681
- 邮箱：99515681@qq.com
- 工作时间：8:00-21:00
- 微信：codinghelp

- Fit5217辅导、Python程序语言辅导 2022-05-31
- 辅导ecs 170 Introduction To Artificial... 2022-05-31
- 辅导ecs 170 Homework Assignment 5 2022-05-31
- Fit 5003 Software Security辅导 2022-05-30
- 辅导cse 101 Data Structures And Algori... 2022-05-30
- 辅导econ7150、辅导java，Python编程 2022-05-30
- Econ7150编程辅导 讲解 S1 2022 2022-05-29
- 讲解cse 101 程序 辅导 Data Structures 2022-05-29
- 辅导fit 5003 Software Security 2022-05-29
- Stat7055 Introductory Statistics For B... 2022-05-28
- Assignment 3 Description: Computer Sy... 2022-05-28
- 辅导laboratory 程序、辅导program编程 2022-05-28
- 讲解eece 1080C Programming For Ece 2022-05-28
- Comp10002 Foundations Of Algorithms辅导... 2022-05-28
- 辅导 Swen30006、辅导java/C++编程 2022-05-28
- Comp326讲解导、辅导python，Java程序 2022-05-28
- 辅导 Dungeon Crawler C++ - Assignment ... 2022-05-27
- 辅导mast30025 Linear Statistical Model... 2022-05-27
- Prog2002辅导、辅导sql语言编程 2022-05-26
- 辅导 Info411/911 Data Mining Knowledge... 2022-05-26