Efficient Data Sorting: Introducing a new Method

The efficiency of data sorting algorithms is the key aspect which determines the speed of data processing and searching. The best known efficiency of sorting algorithm has been Log (N) if there are N terms. All of the well-known sorting algorithms use various techniques to sort data. The basis for most of these are comparing the data terms with each other. In this manuscript, we are introducing a new approach for sorting data. This method is postulated to have the highest efficiency ever achieved by any of the sorting algorithms. We achieve this by sorting data without comparing the data terms. Or achieving results of data comparison without comparing the terms explicitly!


Introduction
Existing sorting algorithms in the field of computer science have complexities varying from O Nlog (N) to O(N^2), from the best case to the worst case. These algorithms belong to a class called "comparison sorts" where the sorted order is determined based only on comparisons between the input elements. It has also been proven that any comparison sort algorithm requires Ω(NlgN) comparisons in the worst [9]. i.e either we can try to identify the areas of improvement in the well established sorting methods or we can lok for completely new methods.
The sorting methods and search capabilities as methods as given by Wilkes et al., [10], have given quantitative measures to check the feasibility for applying a specific sorting method. Also it is clearly highlighted that the efficiency is affected with increasing volume of data. Hence we have found a new method, whose efficiency is nearly independent from the volume of data. It is limited only by the extent to which the infrastructure can scale. Insights regarding types of memories present in the current computer hardware as mentioned by Meena et al.,[11], have helped in exploring further possibilities for memory storage and opportunities for further optimizations. The details mentioned by Arge et al., [12] have given sufficient guidance on internal & external memory units and their role in achieving sorting efficiencies.
For our method, one of the key circuit element, the OPAMP and its capabilities as mentioned by Solomon et al., [14] were very useful. The operating conditions of the OPAMP under various circumstances as mentioned by [15] were key inputs for our method. The challenges of existing methods and future directions for further innovations as mentioned by Mutlu et al., [16] were instrumental in the realization of the new method, we have built. The ideas of parallel sorting as mentioned by Bitton et al., [17] were the methods which could offer a clear advantage in performance. We saw few challenges with respect to scaling for huge data processing requirements. The hardware acceleration methods as mentioned by Zurek et al.,[18] were useful. However we saw that such possibilities are always attached to increased cost. And unless there is a fundamental change to the sorting method, an exponential speed-up could not be achieved.
As we have used the circuit element OPAMP in our methods. The key details outlined by Waltari et al., [19] for this circuit element were very useful. A hybrid approach as mentioned by Jan et al., [20] gave key insights to address challenges in sorting upfront.
A clear scope for improvement in the area of sorting & searching and the components of a computer which determine how efficiently this can be made as mentioned by Li et al., [13] shows the evolution in approaches for challenges in the field of conputer science. In this paper we demonstrate the sorting method by using the properties of electric current flow in a customized circuit. The flow of current adhering to the existing laws, is used to simulate data sorting without comparison. We are using the fundamental property of flow of electricity and the conditions in which it will flow. i.e a potential difference or presence of potential gradeint. We demonstrate the working using simulator tools.
Having seen the evolutions in the field of computer science, and after verifying various methos applied for imroving the data sorting efficiencies. We have chosen the "DataSorting" as a special case. And we are focussing on solving the efficieny problems by significantly improving the sort operations.
The key aspects as mentioned by Chen et al [2], are useful in order to come up with new sorting methods which can improve efficiency by a large factor.

Approach :
Unlike the typical sorting where in the terms are compared and stored in the memory. We are introduing a specialised optimization by adding Sorting memory. This memory sorts data as soon as the data is entered. i.e if we enter 100 terms in a sorting memory of capacity 1000 terms. The 100 data terms will be already in a sorted order. And the remaining 900 data terms space is empty. Though this may not be the best approach with respect to memory utilization perspective. This will bring exponential speed in terms of performance of the application for the use cases where sorting is inevitable. It is always done instantly, with no additional sorting operation.
The potential difference is mapped to constituent terms. The descrete values of volt are assigned to data terms when they are entered. i.e We demonstrate the sorting of numbers by mapping each of these with a specific value such that there exists a potential difference, among them. This potential difference is chosen such that we have the satisfying conditions for the demonstration of the data sorting of these numbers in real time. We have demonstrated the sorting operations for a the numbers 1, 2 & 3(could be entered in any order).This principle can be extended for sorting text data(non-numeric) as well. Thereby it is possible to sort a large amount of data. This is limited only by the scale of this new hardware setup. In temporal terms the sorting happens at the speed of light. Since the data automatically knows its sorted position due to its corelation with the potential difference. As the current flow from the lower potential to its higher potential. The curent passage is blocked to any other memory paths by the elelctrical proprty of current and not by any explict logic / check gate. Thus, each element undergoes a single task of storing once, leading to a time complexity of O(1) or constant time because the operation only happens once, and they do not depend on the size of the input as they run.
Unlike typical data sorting, the sorting is carried out in a dedicated SortingMemory. The design of the SortingRAM differs from other types of memory disks, in its design and functionality. The Memory registers are arranged with potential grader. The inputs are statically separated to give higher current/potential multipliers. The mapping is done in the potential difference grader. The potential difference in terms of volt is mapped to constituent terms. The descrete values of volt are assigned to data terms when they are entered. i.e for the number n the volt(Vin) value will be n Volts and the destination volt(Vend) value will also be n Volts. A circuit component called OPAMP is introduced in between Vin and Vend which will amplify Vin to create the required potential difference.
Due to the amplified voltage being more than Vend, potential difference is created which leads to current flowing through this channel and automtically the memory unit representing this location storing the value n.
Note: For the current to flow or for an LED to light up indicating the storage, a minimum of 3V potential difference is necessary.
The core principle here is to have the current flow from one end of the circuit (input) to the other end (memory storage). And we would like to establish the potential difference so that the current flows as per our planned path/route.
Take into account that all Vend voltages for the 3 numbers are present with 1 common Vin voltage which will vary. Let's consider 3 numbers -1, 2 and 3.
Beginning with the number 1 i.e , to store number 1 which is represented by lighting up of LED 1. Figure 5, Vin will be 1V and Vend1 will also be 1V. As yellow path represents the flow of current, it first encounters an inverting OPAMP first . Here, Vin = 1V , Vref is also set to 1V and VCC is also connected to Vin which makes VCC=1V as well . Since Vin<=Vref, condition(Vin<=Vref) is satisfied, value of VCC will be sent as Vout i.e, 1V. Next, the path encounters a non-inverting OPAMP. Here, the Vin value will be the output from previous OPAMP i.e new Vin=1V, Vref is set to 0V and VCC is set to 5V. Since Vin>Vref, condition(Vin>Vref) is satisfied, value of VCC will be sent as Vout i.e, 5V, but the OPAMP offers an internal resistance due to which Vout will be around 1V less than VCC which makes Vout=4V. Finally, the path leads to an LED and an end potential Vend1 of 1V. The output of non-inverting OPAMP will be the new start potential which is 4V. As discussed in the beginning, a minimum potential difference of 3V is required between the start and end potential for proper amount of current to flow and light up the LED (indicating storage of the number). The current potential difference will be (start potential -end potential) i.e, 4V-1V =3V which satisfies the requirement,

Considering left section of the circuit in
considering the nature of current, it flows until the end lighting up LED1.
However, considering the middle section of the circuit in Figure 5, Vin will be 1V and Vend2 will be 2V.
As yellow path represents the flow of current, it first encounters an inverted OPAMP first . Here, Vin = 1V , Vref is set to 2V and VCC is also connected to Vin which makes VCC=1V as well . Since Vin<=Vref, condition(Vin<=Vref) is satisfied, value of VCC will be sent as Vout i.e, 1V. Next, the path encounters a non-inverting OPAMP. Here, the Vin value will be the output from previous OPAMP i.e new Vin=1V, Vref is set to 1V. Since Vin=Vref, the condition(Vin>Vref) fails and VEE is considered which is connected to the GND(ground).
Similarly, considering the right section of the circuit in Figure 5, Vin will be 1V and Vend3 will be 3V. As yellow path represents the flow of current, it first encounters an inverted OPAMP first . Here, Vin = 1V , Vref is set to 3V and VCC is also connected to Vin which makes VCC=1V as well . Since Vin<=Vref, condition(Vin<=Vref) is satisfied, value of VCC will be sent as Vout i.e, 1V. Next, the path encounters a non-inverting OPAMP. Here, the Vin value will be the output from previous OPAMP i.e new Vin=1V, Vref is set to 2V. Since Vin<Vref, the condition(Vin>Vref) fails and VEE is considered which is connected to the GND(ground).
Thus, when Vin=1V, LED1 lights up indicating memory storage of the number 1.      Since the procedure does not involve comparsion or looping, all the actions take place just once. Hence, the time complexity will be equal to Ω(1) for Best case, Θ(1) for average case and O(1) for worst case.

Method for searching a data term.
As it might be clear now, though this isn't mentioned explicitly. That, this method is useful for searching a data item inside the already stored dataset. i.e the search item would also pass through the circuit and would follow it's applicable path. And this could be acknowledged back by the receiving end, by sending the signal back to the input element confirming that the search item is present.
In the proposed sorting RAM, since each element or digit has a designated memory address, one can search for the value present in respective address and if the result is not empty or null, the element is declared present and the search is successful.

Example:
Consider we have a sorting RAM for 10 designated integers and initialVar=0 to be the element stored in the very first memory address.
Corresponsing memory addresses will belong to the remaining numbers in order.
Thus respective memory addresses for each number will be known by incrementing each address by 4 bytes since they involve integers.

Results
The sorting or positioning of the inputted value which happens instantaneously is inspired by the Quantum computing, the computing realm offering exponential speed. While the quantum computers offer great advantages over the classical computers. The quest for quantum supremacy is still actively pursued.
We are yet to evidence a useful application from the quantum computer. While there are challenges in building a quantum computer with sufficnet no of qubits. We could try to get a method for improved speed compared to a classical method for one of the applications of the computer.
As there are numerous applications in the areas such as Optimization problems and several applications in Big data. And since conventional approaches have practical limitation of efficiencies in seraching a given data term. This method offers exponential speed in sorting & searching data. Though there is additional cost involved to have dedicated memory for specific data. Such approach will be more suitable for some specific use cases if not for all scenarios.
We see that, the method demonstrated here can be used to prepare an input state for a complex quantum problem with greater speed.