Skip to content

Commit fb2a14f

Browse files
author
Hernán Morales Durand
committed
Remove unnecessary assertion in #dendrogram
1 parent e290675 commit fb2a14f

File tree

2 files changed

+22
-21
lines changed

2 files changed

+22
-21
lines changed

src/AI-HierarchicalClustering/AIClusteringData.class.st

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ AIClusteringData >> completeLinkage [
7373
AIClusteringData >> dendrogram [
7474
" Answer an <AIDendrogramNode> representing the root node of the receiver's dendrogram "
7575

76-
self assert: indices size equals: 1.
7776
^ clusters at: indices anyOne
7877
]
7978

src/AI-HierarchicalClustering/Integer.extension.st

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,33 @@ Extension { #name : #Integer }
22

33
{ #category : #'*AI-HierarchicalClustering' }
44
Integer >> findNK [
5+
56
" Yields all n and k such that n take: k = self.
67
https://math.stackexchange.com/a/103385/205 "
78

89
| k |
910
[ self > 1 ] assert.
10-
k := 0.
11-
^ Array streamContents: [ : stream |
12-
[ true ] whileTrue: [
13-
| nmin nmax choose |
14-
k := k + 1.
15-
((2 * k + 1) * self) <= (4 ** k)
16-
ifTrue: [ ^ stream contents ].
17-
nmin := self firstOver: k with: (k factorial * self).
18-
nmax := nmin + k + 1.
19-
nmin := nmin max: (2 * k).
20-
choose := nmin asInteger take: k.
21-
nmin to: nmax do: [ : n |
22-
choose = self
23-
ifTrue: [
24-
stream nextPutAll: { n asInteger . k asInteger }.
25-
k < (n - k)
26-
ifTrue: [ stream nextPutAll: { n asInteger . (n - k) asInteger } ] ].
27-
choose := choose * (n + 1).
28-
choose := (choose / (n + 1 - k)) ceiling ] ] ]
29-
11+
k := 0.
12+
^ Array streamContents: [ :stream |
13+
[ true ] whileTrue: [
14+
| nmin nmax choose |
15+
k := k + 1.
16+
2 * k + 1 * self <= (4 ** k) ifTrue: [ ^ stream contents ].
17+
nmin := self firstOver: k with: k factorial * self.
18+
nmax := nmin + k + 1.
19+
nmin := nmin max: 2 * k.
20+
choose := nmin asInteger numberOfCombinationsTaken: k.
21+
nmin to: nmax do: [ :n |
22+
choose = self ifTrue: [
23+
stream nextPutAll: {
24+
n asInteger.
25+
k asInteger }.
26+
k < (n - k) ifTrue: [
27+
stream nextPutAll: {
28+
n asInteger.
29+
(n - k) asInteger } ] ].
30+
choose := choose * (n + 1).
31+
choose := (choose / (n + 1 - k)) ceiling ] ] ]
3032
]
3133

3234
{ #category : #'*AI-HierarchicalClustering' }

0 commit comments

Comments
 (0)