Prolog代写 | COMP 3031 Assignment 3 PROLOG Programming

这个作业是用Prolog完成线性回归相关的习题
COMP 3031 Assignment 3
PROLOG Programming

PART I:
Question 1.
Define a /2 predicate linear_regression (A, B) to represent the regression
line 𝑦 = 𝐴𝑥 + 𝐵 that is of the least-squares for a set of points (𝑥𝑖
, 𝑦𝑖
). The regression
line on a set of points is of the least-squares if the sum of the squares of the vertical
deviations from each data point to the line is the minimal out of all possible lines.
We will give the set of points in two /1 facts, xs and ys, where 𝑥𝑖
, and 𝑦𝑖
are
corresponding elements of the list in xs and ys.
Question 2.
Write a predicate interesting(X) to represent all interesting vertices X, if any, in
a given undirected graph. In other words, after issuing the query interesting(X),
we can get all interesting vertices one by one by keeping typing ‘;’ until all answers are
returned.
A vertex is interesting if it satisfies the following three conditions:
(1) It is sparse, i.e., its degree is less than or equal to 2.
(2) It is connected to at least two dense vertices (vertices whose degrees are greater
than 2), and its shortest paths to its two closest dense vertices are of the same
length.
(3) Its shortest path length to its two closest dense vertices is the shortest among
all other sparse vertices that satisfy condition (2).

Example:
In the graph given by facts edge, vertex A and F are dense, and B, C, D, E, G, and H
are sparse. B, C, E, H are not interesting vertices, because their shortest paths to their
two closest dense vertices A and F are not of equal length. G is an interesting vertex in
this graph, of which the shortest path is of length 1 to A and F. D is not interesting,
because its shortest path length to A and F is 2, which is greater than length 1 of G.
Question 3.
CH3 is a structure consisting of one C atom bound with three H atoms. Define a
predicate ch3(X) in which X is a list containing all C atoms that belong to the CH3
structures given in atom_elements. The order of the elements in the list is
unimportant.
Example query on the given compound toluene:
?- ch3(X).
X=[c7].
Question 4.
Define a predicate c6ring(X) in which X represents a list containing all six-C-atom
rings in the given atom_elements. Each six-C-atom ring is a list containing the six
C atoms that form the ring. The order of the C atoms in the list is unimportant, so each
six-C-atom ring occurs exactly once in the list of rings.
Example query on the given compound toluene:
?- c6ring(X).
X= [[c1,c2,c3,c4,c5,c6]].