LightJason - AgentSpeak(L++)
consistency/metric/CNCD.java
Go to the documentation of this file.
1 /*
2  * @cond LICENSE
3  * ######################################################################################
4  * # LGPL License #
5  * # #
6  * # This file is part of the LightJason AgentSpeak(L++) #
7  * # Copyright (c) 2015-19, LightJason (info@lightjason.org) #
8  * # This program is free software: you can redistribute it and/or modify #
9  * # it under the terms of the GNU Lesser General Public License as #
10  * # published by the Free Software Foundation, either version 3 of the #
11  * # License, or (at your option) any later version. #
12  * # #
13  * # This program is distributed in the hope that it will be useful, #
14  * # but WITHOUT ANY WARRANTY; without even the implied warranty of #
15  * # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
16  * # GNU Lesser General Public License for more details. #
17  * # #
18  * # You should have received a copy of the GNU Lesser General Public License #
19  * # along with this program. If not, see http://www.gnu.org/licenses/ #
20  * ######################################################################################
21  * @endcond
22  */
23 
24 package org.lightjason.agentspeak.consistency.metric;
25 
28 
29 import java.util.stream.Collectors;
30 import java.util.stream.Stream;
31 
32 
38 public final class CNCD implements IMetric
39 {
44 
48  public CNCD()
49  {
50  this( CCommon.ECompression.BZIP );
51  }
52 
58  public CNCD( final CCommon.ECompression p_compression )
59  {
60  m_compression = p_compression;
61  }
62 
63  @Override
64  public final Double apply( final Stream<? extends ITerm> p_first, final Stream<? extends ITerm> p_second )
65  {
66  return CCommon.ncd(
68  p_first.map( Object::toString ).collect( Collectors.joining( "" ) ),
69  p_second.map( Object::toString ).collect( Collectors.joining( "" ) )
70  );
71  }
72 
73 }
final Double apply(final Stream<? extends ITerm > p_first, final Stream<? extends ITerm > p_second)
metric interface of the coherency structure
Definition: IMetric.java:37
common structure for execution definition
CNCD(final CCommon.ECompression p_compression)
ctor
final CCommon.ECompression m_compression
compression algorithm
static double ncd( @Nonnull final ECompression p_compression, @Nonnull final String p_first, @Nonnull final String p_second)
normalized-compression-distance
metric based on the normalized-compression-distance