# Data Structures: Question Set – 34

#### Can a graph have multiple minimum spanning trees with different weights?

No, a graph cannot have multiple minimum spanning trees with different weights. If two minimum spanning trees have different weights, then one of them is not actually a minimum spanning tree. This is because a minimum spanning tree is a tree that has minimum total weight among all trees that connect all the vertices of the graph.

#### What is the role of the priority queue in Prim’s algorithm?

The priority queue in Prim’s algorithm is used to select the next vertex to add to the tree based on its distance from the current tree. The priority queue stores the vertices that are not yet in the tree and their current distance from the tree. At each step, the algorithm selects the vertex with the smallest distance and adds its shortest edge to the tree. The priority queue is updated to reflect the new distances to the vertices that are connected by this edge.

#### What is the time complexity of Kruskal’s algorithm for finding a minimum spanning tree?

The time complexity of Kruskal’s algorithm for finding a minimum spanning tree is O(E log E), where E is the number of edges in the graph. This is because the algorithm involves sorting the edges by weight and performing a union-find operation on each edge to check for cycles. The union-find operation has a time complexity of O(log V) for a graph with V vertices, and it is performed once for each edge. The sorting operation has a time complexity of O(E log E) using a comparison-based sorting algorithm.

#### What is searching, and why is it important?

Searching is the process of finding a specific item or value in a data structure or collection of data. It is important because it is a fundamental operation in computer science and is used in a wide range of applications, including databases, web search engines, and scientific computing.

#### What is linear search, and what is its time complexity?

Linear search is a simple search algorithm that checks each element in a collection until it finds the target value or reaches the end of the collection. Its time complexity is O(n), where n is the number of elements in the collection. Linear search is suitable for small collections, but it becomes inefficient for larger collections.

#### What is binary search, and what is its time complexity?

Binary search is a search algorithm that works by dividing a sorted collection into halves and eliminating one half each time until the target value is found. Its time complexity is O(log n), where n is the number of elements in the collection. Binary search is efficient for large collections and is commonly used in computer science applications.

The main difference between linear search and binary search is their time complexity. Linear search has a time complexity of O(n), while binary search has a time complexity of O(log n). This means that binary search is faster than linear search for large collections. Additionally, linear search does not require a sorted collection, while binary search does.

Depth-first search and breadth-first search are two common graph traversal algorithms. The main difference between them is the order in which they visit the vertices. Depth-first search explores as far as possible along each branch before backtracking, while breadth-first search explores all the vertices at a given distance from the starting vertex before moving on to vertices that are farther away. Depth-first search is often used for finding connected components and detecting cycles, while breadth-first search is often used for finding the shortest path between two vertices in an unweighted graph.

#### What is hashing, and how is it used in computer science?

Hashing is the process of mapping data of arbitrary size to a fixed-size output, called a hash value or hash code. It is used in computer science for a variety of applications, including data storage, indexing, encryption, and authentication.

#### What is a hash function, and what are its properties?

A hash function is a mathematical function that takes an input (the data to be hashed) and produces an output (the hash value). A good hash function should have the following properties:

• Deterministic: The same input should always produce the same hash value.
• Uniformity: The hash values should be uniformly distributed across the range of possible hash values.
• Collision resistance: It should be difficult to find two inputs that produce the same hash value.
• Efficiency: The hash function should be computationally efficient to calculate.