| The code in Part 1 counts the crossings and nestings for a given matching. We now want to use this to analyze the distribution of crossings and nestings for arc diagrams with 100 arcs. Using your function random_matching from Exercise [1.4], generate 104 such arc diagrams and create histograms for the numbers of crossings and nestings, respectively. Display them in a single plot. Also generate a two-dimensional histogram for the joint distribution of crossings and nestings. What do you observe? [1.4] The numpy module contains functions to generate random permutations. Given a non-negative integer n, every permutation of 2n numbers can be turned into a matching by taking the first half of the permutation entries (i.e., the first n numbers) and connecting each of them to the corresponding entry in the second half (i.e., the last n numbers). Use this method to write a function random_matching that takes n and returns a randomly selected matching of 2n numbers in the form of a list of n tuples, where each tuple contains two integers. Note: Ensure that the tuples are returned such that the first integer is less than the second integer. To demonstrate that your code works, draw the arc diagrams for five randomly chosen matchings of 20 numbers. import numpy as np def random_matching(n): # Generate a random permutation of 2n numbers permutation = np.random. permutation (2*n) # Create the matching from the permutation matching = [(min(permutation[i], permutation[i+n]), max(permutation[i], permutation [i+n])) for i in range(n)] return matching Now, let's use this function to generate five randomly chosen matchings of 20 numbers and draw their arc diagrams: import matplotlib.pyplot as plt def draw_arc_diagram (matching): for pair in matching: plt.plot([pair[0], pair[1]], [1, 1], 'k-') plt.plot(pair[0], 1, 'ro') plt.plot(pair[1], 1, 'ro') plt.yticks([]) plt.show() # Generate and draw five random matchings for i in range(5): matching = random_matching (10) # 10 for 20 numbers print("Matching", i+1, ":", matching) draw_arc_diagram (matching)

C++ for Engineers and Scientists
4th Edition
ISBN:9781133187844
Author:Bronson, Gary J.
Publisher:Bronson, Gary J.
Chapter13: Structures
Section: Chapter Questions
Problem 4PP
icon
Related questions
Question
100%
| The code in Part 1 counts the crossings and nestings for a given matching. We now want to use this to analyze the distribution of crossings and
nestings for arc diagrams with 100 arcs.
Using your function random_matching from Exercise [1.4], generate 104 such arc diagrams and create histograms for the numbers of crossings and nestings,
respectively. Display them in a single plot. Also generate a two-dimensional histogram for the joint distribution of crossings and nestings.
What do you observe?
Transcribed Image Text:| The code in Part 1 counts the crossings and nestings for a given matching. We now want to use this to analyze the distribution of crossings and nestings for arc diagrams with 100 arcs. Using your function random_matching from Exercise [1.4], generate 104 such arc diagrams and create histograms for the numbers of crossings and nestings, respectively. Display them in a single plot. Also generate a two-dimensional histogram for the joint distribution of crossings and nestings. What do you observe?
[1.4]
The numpy module contains functions to generate random permutations. Given a non-negative integer n, every permutation of 2n numbers can be
turned into a matching by taking the first half of the permutation entries (i.e., the first n numbers) and connecting each of them to the corresponding entry in the second
half (i.e., the last n numbers). Use this method to write a function random_matching that takes n and returns a randomly selected matching of 2n numbers in the form
of a list of n tuples, where each tuple contains two integers.
Note: Ensure that the tuples are returned such that the first integer is less than the second integer.
To demonstrate that your code works, draw the arc diagrams for five randomly chosen matchings of 20 numbers.
import numpy as np
def random_matching(n):
# Generate a random permutation of 2n numbers
permutation = np.random. permutation (2*n)
# Create the matching from the permutation
matching = [(min(permutation[i], permutation[i+n]), max(permutation[i], permutation [i+n])) for i in range(n)]
return matching
Now, let's use this function to generate five randomly chosen matchings of 20 numbers and draw their arc diagrams:
import matplotlib.pyplot as plt
def draw_arc_diagram (matching):
for pair in matching:
plt.plot([pair[0], pair[1]], [1, 1], 'k-')
plt.plot(pair[0], 1, 'ro')
plt.plot(pair[1], 1, 'ro')
plt.yticks([])
plt.show()
# Generate and draw five random matchings
for i in range(5):
matching = random_matching (10) # 10 for 20 numbers
print("Matching", i+1, ":", matching)
draw_arc_diagram (matching)
Transcribed Image Text:[1.4] The numpy module contains functions to generate random permutations. Given a non-negative integer n, every permutation of 2n numbers can be turned into a matching by taking the first half of the permutation entries (i.e., the first n numbers) and connecting each of them to the corresponding entry in the second half (i.e., the last n numbers). Use this method to write a function random_matching that takes n and returns a randomly selected matching of 2n numbers in the form of a list of n tuples, where each tuple contains two integers. Note: Ensure that the tuples are returned such that the first integer is less than the second integer. To demonstrate that your code works, draw the arc diagrams for five randomly chosen matchings of 20 numbers. import numpy as np def random_matching(n): # Generate a random permutation of 2n numbers permutation = np.random. permutation (2*n) # Create the matching from the permutation matching = [(min(permutation[i], permutation[i+n]), max(permutation[i], permutation [i+n])) for i in range(n)] return matching Now, let's use this function to generate five randomly chosen matchings of 20 numbers and draw their arc diagrams: import matplotlib.pyplot as plt def draw_arc_diagram (matching): for pair in matching: plt.plot([pair[0], pair[1]], [1, 1], 'k-') plt.plot(pair[0], 1, 'ro') plt.plot(pair[1], 1, 'ro') plt.yticks([]) plt.show() # Generate and draw five random matchings for i in range(5): matching = random_matching (10) # 10 for 20 numbers print("Matching", i+1, ":", matching) draw_arc_diagram (matching)
Expert Solution
steps

Step by step

Solved in 2 steps with 2 images

Blurred answer
Recommended textbooks for you
C++ for Engineers and Scientists
C++ for Engineers and Scientists
Computer Science
ISBN:
9781133187844
Author:
Bronson, Gary J.
Publisher:
Course Technology Ptr
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning
Operations Research : Applications and Algorithms
Operations Research : Applications and Algorithms
Computer Science
ISBN:
9780534380588
Author:
Wayne L. Winston
Publisher:
Brooks Cole
Programming with Microsoft Visual Basic 2017
Programming with Microsoft Visual Basic 2017
Computer Science
ISBN:
9781337102124
Author:
Diane Zak
Publisher:
Cengage Learning
Programming Logic & Design Comprehensive
Programming Logic & Design Comprehensive
Computer Science
ISBN:
9781337669405
Author:
FARRELL
Publisher:
Cengage
New Perspectives on HTML5, CSS3, and JavaScript
New Perspectives on HTML5, CSS3, and JavaScript
Computer Science
ISBN:
9781305503922
Author:
Patrick M. Carey
Publisher:
Cengage Learning