A Data Science Central Community
Logarithms turn a product of numbers into a sum of numbers: log(xy) = log(x) + log(y). Hyperlogarithms generalize the concept as follows: Hlog(XY) = Hlog(X) + Hlog(y), where X and Y are any kind of objects, and the product and sum are replaced by operators in some arbitrary space.
Source for picture::click here
Here we focus exclusively on operations on sets: XY becomes the intersection of the sets X and Y, and X + Y the union of X and Y. The question is: which functions satisfy Hlog(XY) = Hlog(X) + Hlog(y). We assume here that the argument for Hlog is a set X, and the returned value Hlog(X) = Y is another set Y from the same set of sets. Let E = {X, Y, ... } be the sets of all potential arguments for Hlog. E must satisfy the following conditions
The following additional condition can be added:
Let's denote as U the union of all sets of E. It is easy to prove that Hlog(U) is the empty set, denoted as O. Also Hlog(O) does not exist, just like log(0) does not exist. It is also easy to prove that Hlog(XYZ) = Hlog(X) + Hlog(Y) + Hlog(Z), and this generalizes to any (finite) number of sets in E.
Two functions Hlog satisfy Hlog(XY) = Hlog(X) + Hlog(Y) :
The question is: Besides these two functions (the first one is a degenerate solution), are there any other functions Hlog satisfying the same property? How do you proceed to solve such as weird functional equation in an unusual space? One could try to investigate this problem by first analyzing the case where E contains only 3 or 4 sets: In this case, look at all potential functions defined on E (there is only a finite number of them), and see which ones satisfy the equation Hlog(XY) = Hlog(X) + Hlog(Y).
Also, using object orientated programming, how would you implement a generic function Hlog that works both for real numbers, for sets, or in any other context?
To read more of my math-related articles, click here.
DSC Resources
Popular Articles
Comment
An interesting answer was provided here (on Reddit) by Sarcon5673.. It is reproduced below:
Well, if Z = XY, then Hlog(Z) has to be independent of our choice of X and Y. So it must only depend on whether the elements are in Z or not.
I'm not sure how to formalize my thoughts, but we want to look at functions of 1 boolean variable. We want f(a and b) = f(a) or f(b)
Since f is a function of a single variable, we can just look at all possible boolean functions of a single variable:
f1(x) = True, f2(x) = False, f3(x) = x, f4(x) = Not x
Both f1 and f2 work fine, since you get True = True or True, and False = False or False.
For f3, it doesn't work, because if a = True and b = False, we have False = f(False) = f(True and False) = f(True) or f(False) = True or False = True, a contradiction.
f4, on the other hand, surprisingly works.
Now, the way Hlog works is that it's supposed to take in elements of U, and each element could have a fixed function of {f1, f2, f4}, and the input is whether it's in Z or not.
For the two examples the author gave, the first corresponds with some of the elements of U having the function f1, while the others having f2. For the second, every element has the function f4 applied. There's an edge case that the other avoided, which is where all functions are f2, which means Hlog is identically {}.
So, I could have U = {a,b,c}, and each element corresponds with f1, f2, and f4, respectively. So, Hlog({a,b}) = {a,c}, Hlog({a,c}) = {a}, Hlog({b,c}) = {a}, Hlog(U) = {a}. And you can confirm that it works by generating the other possibilities from this one.
Notice this one: Hlog(U) = {a}; this contradicts the author. This is because he assumed something incorrect: That Hlog(Z) = Hlog(UZ) = Hlog(Z) + Hlog(U) implies that Hlog(U) = {} by "cancellation". In reality, you cannot cancel a set that is unioned with another. And this shows Hlog(U) could be nonempty. Hlog(U) equals a subset of the biggest subset of all possible outputs.
Also, however, Hlog({}) = {a,c} by our construction, so again, it contradicts the author, and it actually equals the union of all possible outputs. (think of it informally like log(0) = infinity, "the biggest thing")
And we're done.
:
You need to be a member of AnalyticBridge to add comments!
Join AnalyticBridge