# CSCI 2300作业代做、代写Algorithms课程作业、代写Python，c/c++，Java程序语言作业 代写R语言编程|代写Python编程

CSCI 2300 — Introduction to Algorithms
Lab 4 (document version 1.0) — DUE July 15, 2020
Minimum Spanning Trees and Perfect Matchings
• This lab is to be completed individually. Do not share your work or code with anyone else.
• For all labs, please avoid using Google to find suggestions or solutions. The goal is to use
your own brain to work these problems out, which will help you develop the skills to do well
on the exams and, more importantly, become a substantially better computer scientist.
In this lab, we focus on minimum spanning trees and the new concept of perfect matchings.
1. Show that Prim’s Algorithm works for graphs that contain negative edge weights.
Hint: Start by working out a few examples, then prove the claim by showing that each step
of Prim’s Algorithm works for an edge of negative edge weight.
2. Prove by contradiction that if graph G = (V, E) has a cycle that includes unique heaviest
(highest-weighted) edge e, then e cannot be part of any minimum spanning tree of G.
3. Given undirected tree T = (V, E), write a linear-time algorithm that determines whether T
contains a perfect matching. Here, we define a perfect matching as subset Em of edge set E
that contains edges incident with each vertex exactly once. As an example, in the graph
shown below (not a tree!), we have two perfect matchings, i.e., Em = {{A, B}, {C, D}}
and Em = {{A, C}, {B, D}}.
Be sure to describe the runtime of your algorithm using Big-O() notation.
Hint: Start by looking for specific properties that must be true to have a perfect matching
in a tree (e.g., how many vertices must you have to actually have a perfect matching, how
many perfect matchings can a tree have, etc.?), then generalize into a linear-time algorithm.
What to submit
Please submit a single PDF file called upload.pdf that neatly contains your answers to the above
questions. Be sure to proofread your work and make sure it is clear, concise, and correct.